次の方法で共有


方法 : デバッグ ヒープを使用する

更新 : 2007 年 11 月

このトピックの内容は、次の製品に該当します。

Edition

Visual Basic

C#

C++

Web Developer

Express

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

Standard

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

Pro/Team

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

表の凡例 :

トピック該当

対象

トピック該当なし

該当なし

トピックは該当しますが、コマンドは既定では非表示です

既定で非表示のコマンド

malloc、free、callocrealloc、new、delete などのヒープ関数の呼び出しは、すべてデバッグ ヒープで動作するデバッグ バージョンのヒープ関数に置き換えられます。メモリ ブロックが解放されると、デバッグ ヒープは割り当て領域の前後に確保されたバッファが完全かどうかを自動的にチェックし、それらのバッファが上書きされていた場合はエラーを出力します。

デバッグ ヒープを使用するには

  • アプリケーションのデバッグ ビルドに C ランタイム ライブラリのデバッグ バージョンをリンクします。

_crtDbgFlag の 1 つ以上のビット フィールドを変更してフラグの新しい状態を作成するには

  1. newFlag パラメータに _CRTDBG_REPORT_FLAG を設定して _CrtSetDbgFlag を呼び出すことによって、現在の _crtDbgFlag の状態を取得し、その値を一時変数に格納します。

  2. この一時変数と、オンにするビットマスクとの OR (ビット演算子の |) 演算を行い、ビットをオンにします。ビットマスクは、アプリケーション コードの中ではマニフェスト定数で表されています。

  3. 一時変数と、オフにするビットマスクの NOT (ビット演算子の ~) との AND (ビット演算子の &) をとり、ビットをオフにします。

  4. newFlag パラメータに一時変数に格納されている値を設定して _CrtSetDbgFlag を呼び出すことによって、_crtDbgFlag の新しい状態を作成します。

使用例

たとえば、次のコードは、メモリ リークの自動検出をオンにし、_CRT_BLOCK 型のブロックに関するチェックをオフにします。

// Get current flag
int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );

// Turn on leak-checking bit.
tmpFlag |= _CRTDBG_LEAK_CHECK_DF;

// Turn off CRT block checking bit.
tmpFlag &= ~_CRTDBG_CHECK_CRT_DF;

// Set flag to the new value.
_CrtSetDbgFlag( tmpFlag );

参照

その他の技術情報

CRT デバッグ ヒープ