Share via


_CrtIsMemoryBlock

更新 : 2007 年 11 月

指定されたメモリ ブロックがローカル ヒープ内にあり、有効なデバッグ ヒープ ブロック型識別子が設定されていることを検査します (デバッグ バージョンだけ)。

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 関数は、指定されたメモリ ブロックがアプリケーションのローカル ヒープ内にあり、有効なブロック型識別子が設定されていることを検査します。また、この関数を使用すると、オブジェクト割り当て順序番号と、メモリ ブロックの割り当て要求を行ったソース ファイル名および行番号を取得できます。NULL 以外の値を requestNumber、filenamelinenumber のいずれかのパラメータに渡すと、_CrtIsMemoryBlock は、ローカル ヒープ内にメモリ ブロックが見つかった場合に、メモリ ブロックのデバッグ ヘッダーの値にパラメータを設定します。_DEBUG が未定義の場合、_CrtIsMemoryBlock の呼び出しはプリプロセスで削除されます。

この関数は TRUE または FALSE を返すため、_ASSERT 系マクロに渡すことによって、単純なエラー処理機構を作成できます。指定されたアドレスがローカル ヒープ内にない場合に、アサーションの失敗を発生させるには、次のように記述します。

_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber, 
&filename, &linenumber ) );

他のデバッグ関数およびデバッグ マクロと連携した _CrtIsMemoryBlock の使い方の詳細については、「レポート用マクロの使用」を参照してください。デバッグ バージョンのベース ヒープに対するメモリ ブロックの割り当て、初期化、管理方法の詳細については、「メモリ管理とデバッグ ヒープ」を参照してください。

必要条件

ルーチン

必須ヘッダー

_CrtIsMemoryBlock

<crtdbg.h>

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

ライブラリ

C ランタイム ライブラリのデバッグ バージョンのみ。

使用例

_CrtIsValidHeapPointer」のトピックの例を参照してください。

.NET Framework の相当するアイテム

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

参照

参照

デバッグ ルーチン