_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
参照してください。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示