次の方法で共有


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

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

エディション

Visual Basic

C#

F#

C++

Web Developer

Express

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

ネイティブのみ

トピック該当なし

Pro、Premium、Ultimate

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

ネイティブのみ

トピック該当なし

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 デバッグ ヒープ