所以我正在创建一个多线程 C++ 程序,它返回这个错误:
HANASimulationSync.exe 中 0x77e915de 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000020。
顺便说一句,当我在单个线程中运行此代码时,它不会返回任何错误。我只想知道这是什么错误?它与内存管理有关吗?
所以我正在创建一个多线程 C++ 程序,它返回这个错误:
HANASimulationSync.exe 中 0x77e915de 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000020。
顺便说一句,当我在单个线程中运行此代码时,它不会返回任何错误。我只想知道这是什么错误?它与内存管理有关吗?
这意味着您试图从无效的内存位置读取。在这种情况下,位置是0x00000020
。由于这只是零以上的一个小偏移量,因此您似乎可能正在取消引用来自空指针的偏移量。
因此,查看此类内容的一种常见方法是,如果您有一个成员位于 offset 的结构0x20
。然后,如果您尝试从指向指针为空的结构的指针中读取该成员。使用空指针对数组进行索引也会出现同样的错误。我想你现在明白了。
其他相关信息是导致故障的代码地址。在你的例子中是0x77e915de
. 如果您将链接器配置为生成完整的图像映射,您将能够识别导致错误的代码行。更好的是,如果您生成调试信息,那么您可以附加一个调试器。
一般而言,这种错误称为分段错误、访问冲突或保护错误。这些术语的意思都是一样的。