次の方法で共有


_CrtMemDifference

2 人のメモリ状態を比較し比較 (デバッグ バージョンだけ) を返します。

int _CrtMemDifference( 
   _CrtMemState *stateDiff,
   const _CrtMemState *oldState,
   const _CrtMemState *newState 
);

パラメーター

  • stateDiff
    2 人のメモリ状態の違いを使用する _CrtMemState 構造体へのポインター () を格納するために使用します。

  • oldState
    以前のメモリ状態 _CrtMemState (構造体) へのポインター。

  • newState
    後でメモリ状態 _CrtMemState (構造体) へのポインター。

戻り値

メモリ状態が _CrtMemDifference 大きく異なる場合は true を返します。それ以外の場合は false が返されます。

解説

_CrtMemDifference の関数は oldState と newState を比較しメモリ リークなどのメモリの問題を検出するアプリケーションで使用できる stateDiff の違いを格納します。_DEBUG が未定義の場合、_CrtMemDifference の呼び出しはプリプロセスで削除されます。

newState と oldState は _CrtMemDifference を呼び出す前に _CrtMemCheckpoint によって入力された Crtdbg.h で定義されている _CrtMemState 各構造体への有効なポインターである必要があります。stateDiff は _CrtMemState の構造の割り当て済みインスタンスへのポインターである必要があります。stateDiffnewStateまたは oldState が NULL いるように無効なパラメーター ハンドラーが パラメーターの検証 に説明されているように開始されます。実行の継続が許可 errno、_doserrno、_sys_errlist、および _sys_nerr は false EINVAL および関数の戻り値に設定されます。

_CrtMemDifference は newState と oldState ブロックの _CrtMemState フィールドの値を比較しstateDiff に格納されます。割り当てられているブロック型の数と種類ごとに割り当てられたブロックの合計数が 2 人のメモリ状態の間で異なるとその状態は大きく異なる呼ばれます。2 人の状態に対して割り当てられた多くの違いと 2 人の状態の割り当ての合計の違いはstateDiff に格納されます。

既定では内部 C ランタイム _CRT_BLOCK ブロック () はメモリ状態の操作に含まれません。_CrtSetDbgFlag の関数がメモリ リークの検出などのメモリ状態の操作にこれらのブロックを含めるに _crtDbgFlag_CRTDBG_CHECK_CRT_DF のビットをオンにすることができます。解放されたメモリ ブロックで _FREE_BLOCK() _CrtMemDifference は true が返されます。

ヒープ状態関数と _CrtMemState 構造体の詳細については、「ヒープの状態をレポートする関数」を参照してください。情報およびデバッグ バージョンのベース ヒープに対するメモリ管理のブロックが初期化方法に関する割り当てられているか メモリ管理とデバッグ ヒープ を参照してください。

必要条件

ルーチン

必須ヘッダー

オプション ヘッダー

_CrtMemDifference

<crtdbg.h>

<errno.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

ライブラリ:CRT ライブラリの機能 のデバッグ バージョンのみ。

使用例

crt_dbg1」を参照してください。

同等の .NET Framework 関数

該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

関連項目

デバッグ ルーチン

_crtDbgFlag