【发布时间】:2010-11-22 02:55:11
【问题描述】:
IntellitracTCPIP.exe 中 0x523d14cf (msvcr100d.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000008。
什么会导致这个错误?以及如何解决它
【问题讨论】:
-
资料不够,能给我们一个测试用例吗?
-
或者重现问题的最小代码sn-p?
标签: c++
IntellitracTCPIP.exe 中 0x523d14cf (msvcr100d.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000008。
什么会导致这个错误?以及如何解决它
【问题讨论】:
标签: c++
您尝试读取的地址表明您有一个由许多 4 字节整数组成的结构。您有一个指向该结构类型的指针,但该指针为空。你的程序想要读取第三个——第三个整数字段的偏移量是 8。将它添加到空指针地址 0,你得到 0x00000008。 (它可以是更小或更大类型的结构,甚至是一个数组,但我的经验告诉我,最有可能的是 4 字节整数。)
错误信息表明有问题的代码行属于 msvcr100d.dll。那不是你的代码;您可能已将空指针传递给某个 C 运行时函数。该函数假定您提供了一个有效指针并尝试读取结构的第三个字段,但由于该指针无效,操作系统拦截了读取尝试并引发了异常。
在错误发生之前找到程序中的最后一行代码。为此,您可以使用 调用堆栈 查看程序为到达崩溃点而进行的函数调用链。向下查看列表,直到找到您的功能之一。你看到任何指针吗?当您调用该函数时,您能保证它们都是有效的吗?如果不是,那么你确定你应该调用那个函数吗?要么确保指针有效,要么避免使用空指针调用函数。
【讨论】:
0xC0000005: Access violation reading location 0x00000008.
这表明一个错误的指针。没有指针显示指向0x00000008 这样的低地址。您没有提供足够的信息,请尝试在调试器下运行程序。
【讨论】: