_CrtCheckMemory

确认在调试堆中分配的内存块的完整性(仅限调试版)。

语法


int _CrtCheckMemory( void );

返回值

如果成功,_CrtCheckMemory 将返回 TRUE;否则,函数将返回 FALSE

注解

_CrtCheckMemory 函数通过验证基础基堆并检查每个内存块来验证由调试堆管理器分配的内存。 如果在基础基堆、调试标头信息或覆盖缓冲区中遇到错误或内存不一致,_CrtCheckMemory 将生成调试报告,其中包括描述错误条件的信息。 未定义 _DEBUG 时,会在预处理过程中删除对 _CrtCheckMemory 的调用。

可通过使用 _CrtSetDbgFlag 函数设置 _crtDbgFlag 标志的位字段来控制 _CrtCheckMemory 的行为。 启用 _CRTDBG_CHECK_ALWAYS_DF 位字段将导致每次请求内存分配操作时调用 _CrtCheckMemory。 尽管此方法减慢了执行速度,但它对快速捕获错误很有用。 禁用 _CRTDBG_ALLOC_MEM_DF 位字段会导致 _CrtCheckMemory 不验证堆并立即返回 TRUE

因为此函数返回 TRUEFALSE,因此可将它传递到一个 _ASSERT 宏,以创建基本的调试错误处理机制。 在堆中检测到损坏时,下面的示例将导致断言失败:

_ASSERTE( _CrtCheckMemory( ) );

有关如何将 _CrtCheckMemory 与其他调试函数一起使用的详细信息,请参阅堆状态报告函数。 有关内存管理和调试堆的概述,请参阅 CRT 调试堆详细信息

要求

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

有关兼容性的详细信息,请参阅 兼容性

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

示例

有关如何使用 _CrtCheckMemory 的示例,请参阅 crt_dbg1

另请参阅

调试例程
_crtDbgFlag
_CrtSetDbgFlag