访问冲突读取位置0x00000000。 'new'关键字?

时间:2011-09-23 13:16:55

标签: c++

我有两个类,A和Bar,都共享一个基本上有Foo * foo的头文件。 A类实例化对象Bar * bar。这很好用。但是,如果我进行对象的实例化

Bar* bar = new Bar();

当bar尝试使用foo执行某些操作时,我收到了访问冲突。为什么这会有所不同?

如果我不使用'new',它可以正常工作。这是错误:

Unhandled exception at 0x003c17ea in Direct3DTutorial7.exe: 0xC0000005: Access violation reading  
location 0x00000000.

感谢。

3 个答案:

答案 0 :(得分:13)

0xC0000005: Access violation reading location 0x00000000.

这意味着您可能在Bar的构造函数中或在此构造函数调用的其他代码中取消引用空指针。使用调试器确定确切位置。

答案 1 :(得分:0)

我猜你没有分配你的Foo对象。由于它是一个全局变量,它在程序启动时初始化为零,指针对应于空值。

答案 2 :(得分:0)

你还记得构造一个Foo对象并将它分配给foo指针吗?听起来你的Bar构造函数试图用foo做一些事情,但你还没有创建Foo对象。