_CrtIsMemoryBlock
指定されたメモリ ブロックがローカル ヒープ内にあり、有効なデバッグ ヒープ ブロック型識別子が設定されていることを検査します (デバッグ バージョンだけ)。
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *linenumber
);
パラメーター
[入力] userData
検査するメモリ ブロックの先頭へのポインター。[入力] size
指定されたブロックのサイズ (バイト)。[出力] requestNumber
ブロックの割り当て番号へのポインター、または NULL。[出力] filename
ブロックを要求したソース ファイル名へのポインター、または NULL。[出力] linenumber
ソース ファイル内の行番号へのポインター、または NULL。
戻り値
_CrtIsMemoryBlock は、指定されたメモリ ブロックがローカル ヒープにあり、有効なデバッグ ヒープ ブロック型識別子が設定されていれば、TRUE を返します。それ以外の場合は、FALSE を返します。
解説
_CrtIsMemoryBlock 関数は、指定されたメモリ ブロックがアプリケーションのローカル ヒープ内にあり、有効なブロック型識別子が設定されていることを検査します。また、この関数を使用すると、オブジェクト割り当て順序番号と、メモリ ブロックの割り当て要求を行ったソース ファイル名および行番号を取得できます。requestNumber、filename、linenumber の各パラメーターとして NULL 以外の値を渡すと、_CrtIsMemoryBlock は、ローカル ヒープ内にメモリ ブロックが見つかった場合、これらのパラメーターにそのメモリ ブロックのデバッグ ヘッダーの値を設定します。_DEBUG が未定義の場合、_CrtIsMemoryBlock の呼び出しはプリプロセスで削除されます。
_CrtIsMemoryBlock は、失敗すると FALSE を返し、出力パラメーターを既定値に初期化します。この場合、requestNumber および lineNumber は 0 に設定され、filename は NULL に設定されます。
この関数は TRUE または FALSE を返すため、_ASSERT 系マクロに渡すことによって、デバッグ用の単純なエラー処理機構を作成できます。指定されたアドレスがローカル ヒープ内にない場合に、アサーションの失敗を発生させるには、次のように記述します。
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
他のデバッグ関数およびデバッグ マクロと連携した _CrtIsMemoryBlock の使い方の詳細については、「レポート用マクロの使用」を参照してください。デバッグ バージョンのベース ヒープに対するメモリ ブロックの割り当て、初期化、管理方法の詳細については、「メモリ管理とデバッグ ヒープ」を参照してください。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのデバッグ バージョンのみ。
使用例
「_CrtIsValidHeapPointer」のトピックの例を参照してください。
同等の .NET Framework 関数
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。