_CrtCheckMemory
更新 : 2007 年 11 月
デバッグ ヒープに割り当てられたメモリ ブロックの整合性を確認します (デバッグ バージョンだけ)。
int _CrtCheckMemory( void );
戻り値
正常に実行された場合、_CrtCheckMemory は TRUE を返します。それ以外の場合は、FALSE を返します。
解説
_CrtCheckMemory 関数は、基になるベース ヒープの検査および各メモリ ブロックの検査によって、デバッグ ヒープ マネージャに割り当てられたメモリの妥当性をチェックします。基になるベース ヒープ、デバッグ ヘッダー情報、上書きバッファのいずれかでエラーまたはメモリの不整合が発生した場合、_CrtCheckMemory はデバッグ レポートを生成し、エラー状態を示す情報を出力します。_DEBUG が未定義の場合、_CrtCheckMemory の呼び出しはプリプロセスで削除されます。
_CrtCheckMemory の動作を制御するには、_CrtSetDbgFlag 関数を使用して _crtDbgFlag フラグのビット フィールドを設定します。_CRTDBG_CHECK_ALWAYS_DF ビット フィールドを ON にすると、メモリ割り当て処理の要求時には毎回 _CrtCheckMemory が呼び出されます。このメソッドは実行に時間がかかりますが、エラーを迅速に検出するのに便利です。_CRTDBG_ALLOC_MEM_DF ビット フィールドを OFF にすると、_CrtCheckMemory はヒープを検証せずに、すぐに TRUE を返します。
この関数は TRUE か FALSE を返すので、_ASSERT 系マクロに渡すことによって、単純なエラー処理機構を作成できます。ヒープで破損が検出された場合にアサーションの失敗を発生させるには、次のように記述します。
_ASSERTE( _CrtCheckMemory( ) );
ほかのデバッグ関数と連携した _CrtCheckMemory の使い方の詳細については、「ヒープの状態をレポートする関数」を参照してください。メモリ管理とデバッグ ヒープの概要については、「メモリ管理とデバッグ ヒープ」を参照してください。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_CrtCheckMemory |
<crtdbg.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのデバッグ バージョンのみ。
使用例
_CrtCheckMemory の使用例については、「crt_dbg1 サンプル : C ランタイムの基本的なデバッグ機能」を参照してください。
.NET Framework の相当するアイテム
System::Diagnostics::PerformanceCounter