【问题标题】:Unhandled exception at 0x523d14cf (msvcr100d.dll)?0x523d14cf (msvcr100d.dll) 处未处理的异常?
【发布时间】:2010-11-22 02:55:11
【问题描述】:

IntellitracTCPIP.exe 中 0x523d14cf (msvcr100d.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000008。

什么会导致这个错误?以及如何解决它

【问题讨论】:

  • 资料不够,能给我们一个测试用例吗?
  • 或者重现问题的最小代码sn-p?

标签: c++


【解决方案1】:

您尝试读取的地址表明您有一个由许多 4 字节整数组成的结构。您有一个指向该结构类型的指针,但该指针为空。你的程序想要读取第三个——第三个整数字段的偏移量是 8。将它添加到空指针地址 0,你得到 0x00000008。 (它可以是更小或更大类型的结构,甚至是一个数组,但我的经验告诉我,最有可能的是 4 字节整数。)

错误信息表明有问题的代码行属于 msvcr100d.dll。那不是你的代码;您可能已将空指针传递给某个 C 运行时函数。该函数假定您提供了一个有效指针并尝试读取结构的第三个字段,但由于该指针无效,操作系统拦截了读取尝试并引发了异常。

在错误发生之前找到程序中的最后一行代码。为此,您可以使用 调用堆栈 查看程序为到达崩溃点而进行的函数调用链。向下查看列表,直到找到您的功能之一。你看到任何指针吗?当您调用该函数时,您能保证它们都是有效的吗?如果不是,那么你确定你应该调用那个函数吗?要么确保指针有效,要么避免使用空指针调用函数。

【讨论】:

    【解决方案2】:
    0xC0000005: Access violation reading location 0x00000008. 
    

    这表明一个错误的指针。没有指针显示指向0x00000008 这样的低地址。您没有提供足够的信息,请尝试在调试器下运行程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 2018-05-26
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多