_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
。
因为此函数返回 TRUE
或 FALSE
,因此可将它传递到一个 _ASSERT
宏,以创建基本的调试错误处理机制。 在堆中检测到损坏时,下面的示例将导致断言失败:
_ASSERTE( _CrtCheckMemory( ) );
有关如何将 _CrtCheckMemory
与其他调试函数一起使用的详细信息,请参阅堆状态报告函数。 有关内存管理和调试堆的概述,请参阅 CRT 调试堆详细信息。
要求
例程 | 必需的标头 |
---|---|
_CrtCheckMemory |
<crtdbg.h> |
有关兼容性的详细信息,请参阅 兼容性。
库
仅限 C 运行时库的调试版本。
示例
有关如何使用 _CrtCheckMemory
的示例,请参阅 crt_dbg1
。