【问题标题】:Access violation reading location 0x00000000. 'new' keyword?访问冲突读取位置 0x00000000。 “新”关键字?
【发布时间】:2011-09-23 13:16:55
【问题描述】:

我有两个类,A 和 Bar,它们共享一个头文件,其中基本上包含 Foo* foo。 A 类实例化一个对象 Bar* bar。这工作正常。但是,如果我对对象进行实例化

Bar* bar = new Bar();

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

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

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

谢谢。

【问题讨论】:

  • 可以包含头文件吗?
  • 在调试器中运行,使用调用栈查找崩溃点并添加相关代码部分。
  • 这很可能意味着您正在尝试取消引用空指针。
  • 为什么是new Bar() 而不是new Bar

标签: c++


【解决方案1】:
0xC0000005: Access violation reading location 0x00000000.

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-28
        • 2013-04-15
        相关资源
        最近更新 更多