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++ のデバッグ ランタイムは、割り当てられたメモリ ブロック間に特殊文字シーケンスを挿入します。これらのマジック パターンの 1 つが上書きされたことを検出すると、これをヒープの破損として報告します。

この種のエラーの問題は、通常、実際に破損が発生してからしばらくしてから検出されることです。したがって、破損が報告されたときに取得するコールスタックは、実際の問題とは無関係である可能性があります。

範囲外の書き込みにつながる可能性のある制約のないメモリ アクセスについて、コードを確認してください。AppVerifierVTuneなどのメモリ診断ツールは、問題を突き止めるのに役立ちますが、一般に、これらのエラーをデバッグするのは非常に困難です。

于 2013-11-14T08:32:17.213 に答える