_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。有关更多信息,请参见平台调用示例。