欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

检测内存泄露

发布时间:2025/7/14 编程问答 27 豆豆
生活随笔 收集整理的这篇文章主要介绍了 检测内存泄露 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

  VS的C Run-Time Libraries支持内存调试。对于MFC程序,VS自动添加

#ifdef _DEBUG #define new DEBUG_NEW #endif

  在cpp文件开头,出现内存泄露时就能报告相应的错误信息。

 

  对于非MFC程序,主要工具是调试器和C Run-Time Libraries的debug heap函数。

  要使用这些函数,需设置如下步骤:

  • 使用程序调试版本,C运行时刻函数库也选择调试版本;

 

  • 在程序中添加设置代码,stdafx.h开头是个合适的位置。 #ifdef _DEBUG #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> #define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)

    #endif

    crtdbg.h:通过include此文件将 malloc 和 new 替换为他们的debug版本, _malloc_dbg和 _free_dbg,跟踪内存的分配和释放。

    _CRTDBG_MAP_ALLOC:将CRT的heap函数替换为对应的debug版本,设置此参数能使内存泄露检查提供更多信息。

 

  • 在程序开头添加: #ifdef _DEBUG_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF // 启动堆分配检查| _CRTDBG_LEAK_CHECK_DF ); // 程序结束时__CrtDumpMemoryLeaks自动调用 #endif

     


    附相关链接,详细叙述了调试堆方法:

    1、MSDN中关于检测内存泄露的说明:http://msdn.microsoft.com/en-us/library/e5ewb1h3%28v=VS.80%29.aspx

    2、CRT调试堆:http://blog.csdn.net/ugg/article/details/1585639

  

转载于:https://www.cnblogs.com/TheDaughterOfTime/archive/2012/04/11/2441293.html

总结

以上是生活随笔为你收集整理的检测内存泄露的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。