我在调试时遇到了一些困难。我在我的程序中完全不相关的部分遇到了两个访问冲突错误,我都没有真正理解它们。其中一个发生在我声明一个新变量时,在本例中,
std::map<float, float> fMap;
我已经检查过该名称没有在代码中的其他任何地方使用,我不确定这有什么关系,但我能想到的就是这些。我想当我用指针做一些愚蠢的事情时,我只能设法产生其中之一。有没有人知道可能导致这种情况的原因?该项目正在使用 Borland 6 进行编译。
谢谢,
最佳答案
该错误与手头的声明无关:很可能是您之前犯的错误的延迟后果。在命中映射声明之前运行的一些代码已经以某种方式破坏了堆。 可能可能导致“延迟”崩溃的事情是
- 释放还没有分配给你的内存
- 多次释放内存
- 写入已分配给您的内存区域之外
这些错误可能会立即触发崩溃,但它们通常不会:相反,一些敏感堆结构的损坏部分等待分配以触发崩溃。当 std::map
为其内部分配内存时,它会通过从损坏的堆中请求内存来触发崩溃。
找出答案的最佳方法是使用内存分析工具。它应该在错误发生时向您指出错误,让您解决问题而不是追逐其后果。
关于c++ - 声明变量时发生访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8988390/