<分区>
所以我正在创建一个多线程 C++ 程序,它返回了这个错误:
Unhandled exception at 0x77e915de in HANASimulationSync.exe: 0xC0000005: Access violation reading location 0x00000020.
顺便说一句,当我在单线程中运行这段代码时,它不会返回任何错误。我只想知道这是什么错误?跟内存管理有关系吗?
<分区>
所以我正在创建一个多线程 C++ 程序,它返回了这个错误:
Unhandled exception at 0x77e915de in HANASimulationSync.exe: 0xC0000005: Access violation reading location 0x00000020.
顺便说一句,当我在单线程中运行这段代码时,它不会返回任何错误。我只想知道这是什么错误?跟内存管理有关系吗?
最佳答案
这意味着您试图从无效的内存位置读取。在本例中,位置是 0x00000020
。由于这只是零以上的一个小偏移量,因此您似乎正在取消引用空指针的偏移量。
因此,如果您有一个成员位于偏移量 0x20
的结构,那么查看此类内容的常见方式是。然后,如果您尝试从指向指针为空的结构的指针读取该成员。使用空指针对数组进行索引时会出现相同的错误。我想你现在明白了。
其他相关信息是导致故障的代码地址。在您的示例中是 0x77e915de
。如果您将链接器配置为生成完整的图像映射,您将能够确定是哪一行代码导致了错误。更好的是,如果您生成调试信息,那么您可以附加一个调试器。
一般来说,这种错误称为 segmentation fault ,或访问冲突,或保护错误。这些术语都表示同一件事。
关于c++ - visual studio 中错误消息后的消息是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15615923/