_CrtIsValidPointer
ポインターが null ではないことを確認します。 Visual Studio 2010 より前のバージョンの C ランタイム ライブラリでは、指定したメモリ範囲で読み取りおよび書き込みが可能であることを確認します (デバッグ バージョンのみ)。
構文
int _CrtIsValidPointer(
const void *address,
unsigned int size,
int access
);
パラメーター
address
確認のためにテストするメモリ範囲の先頭を指します。
size
指定されたメモリ範囲のサイズ (バイト単位)。
access
メモリ範囲に対して確認する読み取り/書き込みアクセシビリティ。
戻り値
_CrtIsValidPointer
は、指定したポインターが null でない場合は TRUE
を返します。 Visual Studio 2010 より前の CRT ライブラリ バージョンでは、メモリ範囲が指定された操作に対して有効な場合に TRUE
を返します。 それ以外の場合、関数は FALSE
を返します。
解説
Visual Studio 2010 以降のバージョンの CRT ライブラリでは、 size
パラメーターと access
パラメーターは無視され、 _CrtIsValidPointer
は指定された address
が null ではないことのみを確認します。 このテストは自分で簡単に実行できるため、この関数を使用することはお勧めしません。 Visual Studio 2010 より前のバージョンでは、この関数は、address
から始まる size
バイトのメモリ範囲で、指定されたアクセシビリティ操作が有効であることを確認します。 access
を TRUE
に設定すると、読み取りと書き込みの両方についてメモリ範囲が検証されます。 access
がFALSE
されると、メモリ範囲は読み取り専用として検証されます。 _DEBUG
が定義されていない場合、_CrtIsValidPointer
の呼び出しは前処理で削除されます。
この関数は TRUE
または FALSE
を返すので、 _ASSERT
マクロのいずれかに渡して、基本的なデバッグ エラー処理メカニズムを作成できます。 次の例では、メモリ範囲が読み取り操作と書き込み操作の両方で有効でない場合、アサーション エラーが発生します。
_ASSERTE( _CrtIsValidPointer( address, size, TRUE ) );
他のデバッグ関数やマクロで _CrtIsValidPointer
を使用する方法の詳細については、「 Macros for reportingを参照してください。 基本ヒープのデバッグ バージョンでのメモリ ブロックの割り当て、初期化、および管理方法については、「 CRT デバッグ ヒープの詳細を参照してください。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_CrtIsValidPointer |
<crtdbg.h> |
_CrtIsValidPointer
は Microsoft 拡張機能です。 互換性の詳細については、「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのデバッグ バージョンのみ。
例
_CrtIsValidHeapPointer
記事の例を参照してください。