Share via


_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

.NET Framework 等效项

System::Diagnostics::PerformanceCounter

请参见

参考

调试例程

_crtDbgFlag

_CrtSetDbgFlag