visual studio 2010中的错误/堆的损坏

时间:2013-11-14 08:26:36

标签: c++ visual-studio-2010 opencv image-processing

我可以编译我的代码,但是当我尝试运行它时,我收到此错误:

  

这可能是由于堆损坏,这表示.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行中得到错误...内存分配错误:( 我不知道是什么原因......

1 个答案:

答案 0 :(得分:4)

Visual C ++的Debug运行时在已分配的内存块之间插入special character sequences。如果它检测到其中一个魔术模式被覆盖,则会将其报告为堆损坏。

这些错误的问题在于它们通常仅在实际损坏发生后的某个时间被检测到。因此,报告损坏时获得的callstack可能与实际问题无关。

确保检查代码是否存在可能导致越界写入的无约束内存访问。像AppVerifierVTune这样的内存诊断工具可以帮助解决问题,但一般来说这些错误都很难调试。