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