c++ - 声明变量时发生访问冲突

标签 c++ c++builder

我在调试时遇到了一些困难。我在我的程序中完全不相关的部分遇到了两个访问冲突错误,我都没有真正理解它们。其中一个发生在我声明一个新变量时,在本例中,

std::map<float, float> fMap;

我已经检查过该名称没有在代码中的其他任何地方使用,我不确定这有什么关系,但我能想到的就是这些。我想当我用指针做一些愚蠢的事情时,我只能设法产生其中之一。有没有人知道可能导致这种情况的原因?该项目正在使用 Borland 6 进行编译。

谢谢,

最佳答案

该错误与手头的声明无关:很可能是您之前犯的错误的延迟后果。在命中映射声明之前运行的一些代码已经以某种方式破坏了堆。 可能可能导致“延迟”崩溃的事情是

  • 释放还没有分配给你的内存
  • 多次释放内存
  • 写入已分配给您的内存区域之外

这些错误可能会立即触发崩溃,但它们通常不会:相反,一些敏感堆结构的损坏部分等待分配以触发崩溃。当 std::map 为其内部分配内存时,它会通过从损坏的堆中请求内存来触发崩溃。

找出答案的最佳方法是使用内存分析工具。它应该在错误发生时向您指出错误,让您解决问题而不是追逐其后果。

关于c++ - 声明变量时发生访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8988390/

相关文章:

c++ - 工作线程中的 GDI 打印机设备上下文随机失败

c++ - 如何在 C++ 程序中创建终端命令?

c++ - 如何以及何时分配全局或静态数组的内存?

c++ - C++ 中带有编译时检查的链表

c++ - += 与 C++ 中的字符串

java - OpenCV 2.4.8 人脸检测性能不佳

delphi - TIdThreadComponent OnTerminate 和 OnStopped 在哪个线程中执行?

delphi - 绘图(图表)组件的建议?

delphi - 如何在 C++ Builder 中使用 Delphi Inc() 和 Dec() 过程

delphi - 带有平面按钮且没有计算器的数值编辑控件