内存泄露检测函数_CrtCheckMemory()

来源:互联网 发布:手机淘宝店铺首页网址 编辑:程序博客网 时间:2024/05/20 13:06

内存泄露检测函数_CrtCheckMemory()

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

int _CrtCheckMemory( void );

返回值

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

备注

_CrtCheckMemory() 函数通过验证基本堆和检查每个内存块来确定调试堆管理器分配的内存。
如果在基础堆、调试头信息或是重写缓冲区中遇到错误或是内存不一致,则 _CrtCheckMemory() 生成描述错误情况信息的调试报告。 当 _DEBUG 未定义时,在预处理期间移除对 _CrtCheckMemory 的调用。该函数是在Debug版本中作用,即在Release版本中,该函数将不起作用
通过使用_CrtSetDbgFlag 设置_crtDbgFlag标志的位字段来控制_CrtCheckMemory 的行为。 打开 _CRTDBG_CHECK_ALWAYS_DF 位字段导致每次请求内存分配操作就调用 _CrtCheckMemory 。 虽然此方法会减慢执行,但是有利于快速查看错误。 关闭 _CRTDBG_ALLOC_MEM_DF 位字段导致 _CrtCheckMemory 不能核实堆并且立即返回 TRUE。
因为函数返回 TRUE 或 FALSE, 所以能传递一个_ASSERT 宏命令来创建一个简单的调试错误处理机制。 如果在堆检测到损坏,则_ASSERTE(CrtCheckMemory())造成断言失败。
可以通过如下语句确定在哪一行上面出现了内存使用异常。

_ASSERTE(CrtCheckMemory());
原创粉丝点击