1

あまり役に立たない診断メッセージでメモリのバグを追跡しています。

HEAP[myprogram_run.exe]: HEAP: Free Heap block e0969b0 modified at e096a70 after it was freed
Windows has triggered a breakpoint in myprogram_run.exe.

This may be due to a corruption of the heap, and indicates a bug in myprogram_run.exe or any of 
the DLLs it has loaded.

The output window may have more diagnostic information
The program '[9340] myprogram_run.exe: Native' has exited with code -1 (0xffffffff).

見回した後、次の MSDN リンクを見つけまし 。 _DEBUG を含め、メイン関数に、推奨される順序で以下を追加しました (上記のリンク)。

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

...

int main(..,..) {
   ...
   _CrtDumpMemoryLeaks();
   return retval;
}

しかし、Visual Studio ソリューションの [出力] ウィンドウに、アドバタイズされた診断出力 (行番号などを含む) がまだ表示されませんか? これを正しく診断する方法についての洞察に感謝します。ありがとう!

プロジェクトのプロパティで設定できる

4

1 に答える 1

1

_CrtDumpMemoryLeaksコードがクラッシュする前に呼び出しに到達していることを確認しますか?私の推測では、メモリリークの可能性を報告する機会を得る前に、すでに解放されているメモリを解放しようとしてコードがクラッシュしていると思います。

デバッグ機能の使用方法に関するその他の手がかりについては、Microsoftのサンプルを参照してください。

于 2012-06-13T00:04:28.857 に答える