CRTメモリリーク検出を使用しようとしていますが、MicrosoftVisualStudioで次のメッセージが表示され続けます。「メモリリークが検出されました-オブジェクトダンプをスキップします。」私はそれを実際に実行してオブジェクトダンプを取得することはできません。
運が悪かったので、メモリリーク検出に関するMicrosoftの記事(http://msdn.microsoft.com/en-us/library/e5ewb1h3(VS.80).aspx )の指示に従いました。
私のstdafx.hには(プロジェクト全体を再構築しました):
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
私のアプリケーションのエントリポイントには、次のものがあります。
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
また、ファイル名と行番号がMicrosoftがアドバタイズした形式で表示されることを期待しています。
Detected memory leaks!
Dumping objects ->
C:\PROGRAM FILES\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20) : {18}
normal block at 0x00780E80, 64 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
私はオブジェクトダンプを取得することさえできませんでしたが、他の人がこれらの線に沿って何かを見ていると言っていることに気づきました(_CRTDBG_MAP_ALLOCが定義されていても):
Detected memory leaks!
Dumping objects ->
{18} normal block at 0x00780E80, 64 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
new演算子とdelete演算子のオーバーライドに時間をかけたくないので、CRTデバッグが役立つことを期待していました。これがうまくいかない場合は、new演算子とdelete演算子をオーバーライドしてしまう可能性がありますが、実際には、ファイル名と行番号(指を交差させる)を使用して割り当て情報を取得したいと思います。
ありがとう、キリル