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