_CrtIsValidPointer

ポインターが null ではないことを確認します。 Visual Studio 2010 より前のバージョンの C ランタイム ライブラリでは、指定したメモリ範囲で読み取りおよび書き込みが可能であることを確認します (デバッグ バージョンのみ)。

構文

int _CrtIsValidPointer(
   const void *address,
   unsigned int size,
   int access
);

パラメーター

address
確認のためにテストするメモリ範囲の先頭を指します。

size
指定されたメモリ範囲のサイズ (バイト単位)。

access
メモリ範囲に対して確認する読み取り/書き込みアクセシビリティ。

戻り値

_CrtIsValidPointer は、 TRUE 指定されたポインターが null でない場合に返されます。 Visual Studio 2010 より前のバージョンの CRT ライブラリでは、メモリ範囲が指定された操作に対して有効かどうかを返 TRUE します。 それ以外の場合、関数は FALSE を返します。

解説

Visual Studio 2010 以降のバージョンの CRT ライブラリでは、 size パラメーターと access パラメーターは無視され _CrtIsValidPointer 、指定した address 値が null ではないことのみが確認されます。 このテストは自分で簡単に実行できるため、この関数を使用することはお勧めしません。 Visual Studio 2010 より前のバージョンでは、この関数は、address から始まる size バイトのメモリ範囲で、指定されたアクセシビリティ操作が有効であることを確認します。 にTRUE設定するとaccess、読み取りと書き込みの両方についてメモリ範囲が検証されます。 このFALSE場合access、メモリ範囲は読み取り専用として検証されます。 _DEBUG が定義されていない場合、_CrtIsValidPointer の呼び出しは前処理で削除されます。

この関数は返 TRUE すか、マクロ FALSEのいずれかに _ASSERT 渡して、基本的なデバッグ エラー処理メカニズムを作成できます。 次の例では、メモリ範囲が読み取り操作と書き込み操作の両方で有効でない場合、アサーション エラーが発生します。

_ASSERTE( _CrtIsValidPointer( address, size, TRUE ) );

他のデバッグ関数やマクロと共に使用する方法_CrtIsValidPointerの詳細については、レポート用のマクロを参照してください。 基本ヒープのデバッグ バージョンでのメモリ ブロックの割り当て、初期化、および管理方法については、CRT デバッグ ヒープの詳細を参照してください

必要条件

ルーチンによって返される値 必須ヘッダー
_CrtIsValidPointer <crtdbg.h>

_CrtIsValidPointer は Microsoft 拡張機能です。 互換性の詳細については、「互換性」を参照してください。

ライブラリ

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

記事の例を _CrtIsValidHeapPointer 参照してください。

関連項目

デバッグ ルーチン