_CrtDumpMemoryLeaks
メモリ リークが発生したときに、デバッグ ヒープ内のすべてのメモリ ブロックをダンプします (デバッグ バージョンのみ)。
int _CrtDumpMemoryLeaks( void );
戻り値
_CrtDumpMemoryLeaks は、メモリ リークが見つかった場合は TRUE を返します。 それ以外の場合、関数は FALSE を返します。
解説
_CrtDumpMemoryLeaks 関数は、プログラムの実行開始以降にメモリ リークが発生したかどうかを判定します。 メモリ リークが見つかると、ヒープ内のすべてのオブジェクトのデバッグ ヘッダー情報が、ユーザーが判読できる形式でダンプされます。 _DEBUG が未定義の場合、_CrtDumpMemoryLeaks の呼び出しはプリプロセスで削除されます。
_CrtDumpMemoryLeaks は、アプリケーションによって割り当てられたすべてのメモリが解放されたことを確認するために、プログラムの実行終了時に頻繁に呼び出されます。 プログラムの終了時にこの関数が自動的に呼び出されるようにするには、_CrtSetDbgFlag 関数を使用して、_crtDbgFlag フラグの _CRTDBG_LEAK_CHECK_DF ビット フィールドをオンにします。
_CrtDumpMemoryLeaks は _CrtMemCheckpoint を呼び出してヒープの現在の状態を取得し、解放されていないブロックの状態をスキャンします。 解放されていないブロックが見つかると、_CrtDumpMemoryLeaks は _CrtMemDumpAllObjectsSince を呼び出して、プログラムの実行開始以降にヒープに割り当てられたすべてのオブジェクトについての情報をダンプします。
既定では、内部 C ランタイム ブロック (_CRT_BLOCK) は、メモリ ダンプ操作に含まれません。 これらのブロックをリーク検出プロセスに含めるには、_CrtSetDbgFlag 関数を使用して、_crtDbgFlag の _CRTDBG_CHECK_CRT_DF ビットをオンにします。
ヒープ状態関数と _CrtMemState 構造体の詳細については、「Heap State Reporting Functions (ヒープの状態をレポートする関数)」を参照してください。 デバッグ バージョンのベース ヒープに対するメモリ ブロックの割り当て、初期化、管理方法の詳細については、「CRT デバッグ ヒープ」を参照してください。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_CrtDumpMemoryLeaks |
<crtdbg.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのデバッグ バージョンのみ。
使用例
_CrtDumpMemoryLeaks の使用例については、「crt_dbg1」を参照してください。
同等の .NET Framework 関数
使用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。