_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
構造体について詳しくは、「ヒープ状態レポート関数」をご覧ください。 デバッグ バージョンのベース ヒープでのメモリ ブロックの割り当て、初期化、管理の方法について詳しくは、「CRT デバッグ ヒープの詳細」を参照してください。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_CrtDumpMemoryLeaks |
<crtdbg.h> |
互換性の詳細については、「 Compatibility」を参照してください。
ライブラリ
C ランタイム ライブラリのデバッグ バージョンのみ。
例
_CrtDumpMemoryLeaks
の使用方法のサンプルについては、「crt_dbg1
」を参照してください。