2013-03-25 88 views
1

所以我创建一个多线程的C++程序,它返回此错误:visual studio中的错误消息之后的消息是什么意思?

Unhandled exception at 0x77e915de in HANASimulationSync.exe: 0xC0000005: Access violation reading location 0x00000020.

顺便说一句,当我在一个单独的线程运行这段代码它不返回任何错误。我只想知道这是什么样的错误?它与内存管理有关吗?

+5

是你没有邮政编码?????? – 2013-03-25 13:17:26

+3

@TonyTheLion“我只想知道这是什么错误?” – 2013-03-25 13:18:35

+0

这是一个运行时错误,通常称为“崩溃”。你应该做的是在调试器中运行你的程序。当发生崩溃时,调试器会停止,您可以检查变量并查看函数调用堆栈。如果显示的代码不是您的代码,请在代码中加入调用堆栈。 – 2013-03-25 13:18:45

回答

13

这意味着您试图从无效的内存位置读取数据。在这种情况下,位置是0x00000020。由于这只是零点以上的小偏移量,因此您似乎可能会从空指针取消引用偏移量。

所以,看到这样的事情的一种常见方法是,如果你的结构中有一个偏移量为0x20的成员。然后如果你试图从一个指针指向一个指针为null的结构中读取该成员。你会得到相同的错误索引到一个数组使用空指针。我想你现在就明白了。

其他相关信息是导致故障的代码地址。在你的例子中是0x77e915de。如果您将链接器配置为生成完整映像映射,您将能够识别导致故障的哪一行代码。更好的是,如果你生成调试信息,那么你可以附加一个调试器。

一般而言,这种错误称为segmentation fault,或访问冲突或保护错误。这些条款都意味着同样的事情。

相关问题