0

我可以编译我的代码,但是当我尝试运行它时,我得到了这个错误:

这可能是由于堆损坏,这表明 .exe 文件或其已加载的任何 DLL 中存在错误

我试图调试它,但奇怪的是,我把断点放在哪里都没有关系,我再次得到这个错误:(

有谁知道是什么问题?

在得到一些建议后,我清理了代码并且它工作了,但现在我正在努力解决一个新的内存分配错误:

#define CV_HOUGH_GRADIENT 3;
Mat Valv;
   if( sumValv[0] > sumValv[0]){
      vector<Vec3f> circles;
      HoughCircles( Valv, circles, 3 , 1, Valv.rows/8, 200, 100, 0, 0 );
}

我正在使用 opencv 库,我将使用 HoughCircles 函数检测图像中的圆圈。我在 HoughCircles 行中收到错误...内存分配错误:(我不知道是什么原因...

4

1 回答 1

4

Visual C++ 的调试运行时在分配的内存块之间插入特殊字符序列。如果它检测到这些魔法模式之一被覆盖,它会将其报告为堆损坏。

此类错误的问题在于,它们通常仅在实际损坏发生一段时间后才被检测到。因此,报告损坏时获得的调用堆栈可能与实际问题无关。

确保检查代码是否存在可能导致越界写入的不受约束的内存访问。AppVerifierVTune等内存诊断工具可以帮助找出问题,但通常这些错误很难调试。

于 2013-11-14T08:32:17.213 回答