Share via


_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

参照

参照

デバッグ ルーチン

_crtDbgFlag

_CrtSetDbgFlag