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

请参见

参考

调试例程