Visual Studio中的错误消息后面的消息是什么意思?

时间:2013-03-25 13:16:33

标签: c++ visual-studio-2012

所以我正在创建一个多线程C ++程序并返回此错误:

  

HANASimulationSync.exe中0x77e915de处的未处理异常:   0xC0000005:访问冲突读取位置0x00000020。

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

1 个答案:

答案 0 :(得分:14)

这意味着您试图从无效的内存位置读取。在这种情况下,位置为0x00000020。由于这只是一个高于零的小偏移,看起来你可能正在从空指针中取消引用偏移量。

因此,看到这样的事情的常见方法是,如果你有一个成员位于偏移0x20的结构。然后,如果您尝试从指向指针为null的结构的指针读取该成员。并且您将使用空指针将相同的错误索引到数组中。我想你现在明白了。

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

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