_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 库中,sizeaccess 参数将被忽略,并且 _CrtIsValidPointer 仅验证指定的 address 是否不为 Null。 由于可轻松自行执行此测试,因此不建议使用此函数。 在 Visual Studio 2010 之前的版本中,该函数验证从 address 开始并扩展了 size 个字节的内存范围对于指定的一个或多个可访问操作是否有效。 当将 access 设置为 TRUE 时,内存范围对于读取和写入都有效。 当 accessFALSE 时,内存范围仅对于读取有效。 未定义 _DEBUG 时,会在预处理过程中删除对 _CrtIsValidPointer 的调用。

因为此函数返回 TRUEFALSE,因此可将它传递到一个 _ASSERT 宏,以创建基本的调试错误处理机制。 如果内存范围对于读取和写入操作都无效,则以下示例将导致断言失败:

_ASSERTE( _CrtIsValidPointer( address, size, TRUE ) );

若要详细了解如何将 _CrtIsValidPointer 与其他调试函数和宏一起使用,请参阅用于报告的宏。 若要了解如何在基堆的调试版本中分配、初始化和管理内存块,请参阅 CRT 调试堆详细信息

要求

例程 必需的标头
_CrtIsValidPointer <crtdbg.h>

_CrtIsValidPointer 是 Microsoft 扩展。 有关兼容性信息,请参阅兼容性

仅限 C 运行时库的调试版本。

示例

请参阅 _CrtIsValidHeapPointer 一文的示例。

另请参阅

调试例程