我有两个类,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.
感谢。
答案 0 :(得分:13)
0xC0000005: Access violation reading location 0x00000000.
这意味着您可能在Bar
的构造函数中或在此构造函数调用的其他代码中取消引用空指针。使用调试器确定确切位置。
答案 1 :(得分:0)
我猜你没有分配你的Foo对象。由于它是一个全局变量,它在程序启动时初始化为零,指针对应于空值。
答案 2 :(得分:0)
你还记得构造一个Foo对象并将它分配给foo指针吗?听起来你的Bar构造函数试图用foo做一些事情,但你还没有创建Foo对象。