_CrtIsValidPointer
指定したメモリ範囲で読み取りおよび書き込みが可能であることを確認します (デバッグ バージョンのみ)。
int _CrtIsValidPointer( const void *address, unsigned int size, int access );
パラメーター
address
確認のためにテストするメモリ範囲の先頭を指します。size
指定されたメモリ範囲のサイズ (バイト単位)。access
メモリ範囲に対して確認する読み取り/書き込みアクセシビリティ。
戻り値
_CrtIsValidPointer は、指定されたメモリ範囲で指定された操作が有効である場合は TRUE を返します。 それ以外の場合、関数は FALSE を返します。
解説
_CrtIsValidPointer 関数は、address で始まり size バイトまで拡張されるメモリ範囲で、指定されたアクセシビリティ操作が有効であることを確認します。 access が TRUE に設定されると、メモリ範囲で読み取りと書き込みの両方が確認されます。 access が FALSE の場合は、メモリ範囲での読み取りだけが確認されます。 _DEBUG が未定義の場合、_CrtIsValidPointer の呼び出しはプリプロセスで削除されます。
この関数は TRUE または FALSE を返すため、_ASSERT 系マクロに渡すことによって、デバッグ用の単純なエラー処理機構を作成できます。 次の例では、メモリ範囲で読み取りと書き込みの両方が無効だった場合、アサーション エラーが発生します。
_ASSERTE( _CrtIsValidPointer( address, size, TRUE ) );
_CrtIsValidPointer を他のデバッグ関数およびマクロと共に使用する方法の詳細については、「レポート用マクロの使用」を参照してください。 デバッグ バージョンのベース ヒープに対するメモリ ブロックの割り当て、初期化、管理方法の詳細については、「CRT デバッグ ヒープ」を参照してください。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_CrtIsValidPointer |
<crtdbg.h> |
_CrtIsValidPointer は Microsoft 拡張機能です。 互換性の詳細については、「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのデバッグ バージョンのみ。
使用例
「_CrtIsValidHeapPointer」のトピックの例を参照してください。
同等の .NET Framework 関数
該当なし。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。