_CrtIsValidPointer
验证指针是否不为 Null。 在 Visual Studio 2010 之前的 C 运行时库版本中,验证指定的内存范围对于读取和写入是否有效(仅限调试版本)。
语法
int _CrtIsValidPointer(
const void *address,
unsigned int size,
int access
);
参数
address
指向内存范围的开始位置以进行有效性测试。
size
指定的内存范围大小(以字节为单位)。
access
确定对内存范围的读/写访问能力。
返回值
如果指定的指针不为 Null,则 _CrtIsValidPointer
返回 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
与其他调试函数和宏一起使用,请参阅用于报告的宏。 若要了解如何在基堆的调试版本中分配、初始化和管理内存块,请参阅 CRT 调试堆详细信息。
要求
例程 | 必需的标头 |
---|---|
_CrtIsValidPointer |
<crtdbg.h> |
_CrtIsValidPointer
是 Microsoft 扩展。 有关兼容性信息,请参阅兼容性。
库
仅限 C 运行时库的调试版本。
示例
请参阅 _CrtIsValidHeapPointer
一文的示例。