内存泄露检测方法收集

1、检测内存泄露的方法:  http://blog.csdn.net/skyremember/article/details/2941038

有具体的错误解释

2、C++:VS2005检查内存泄露的简单方法 - 郑文亮  http://www.xue5.com/Developer/C++/656375.html

显示 #define new DEBUG_NEW方法,比较具体

 3、使用_CrtDumpMemoryLeaks()查内存泄露的一些问题

http://blog.sina.com.cn/s/blog_4d7d5ba501019ca9.html

4、VLD使用 http://hi.baidu.com/pdaliu/item/5b70bfb8948e9bea4fc7fda6 

  vs2010使用vld检测内存泄露  http://blog.csdn.net/wolfking_2009/article/details/8995046

 Visual Leak Detector(vld)无法显示内存泄露文件名与行号  http://blog.csdn.net/xiexievv/article/details/8221327

5、vs中检测内存泄漏的方法  http://blog.csdn.net/windows_nt/article/details/8652191

  共三种方法

6、在vc2008中用_crtBreakAlloc调试内存泄漏 http://blog.chinaunix.net/uid-21375345-id-3290446.html

  知道固定的内存编号可使用此法,如:Dumping objects ->
    {858} normal block at 0x003ED290, 12 bytes long。{}中的858即内存编号

具体自己vs2010调试实现:

    首先确定自己的程序使用的是哪个C运行库,方法是程序Propertise -> C/C++ -> Code Generation -> Runtime Library选项,若为Multi-threaded Debug(/MTd),则为静态链接,若为Multi-threaded Debug DLL(/MDd),则为动态链接。

    然后按F11启动程序,程序会停在入口点。此时调出Watch窗口,

    静态链接 在name项中输入_crtBreakAlloc,在value项中输入你要定位的内存分配编号;

    动态链接 在name项中输入{,,msvcr100d.dll}_crtBreakAlloc,在value项中输入内存分配号。注意msvcr90d.dll是vc2008环境使用的运行库dll,若你用的是其他版本vc,请换成对应版本的dll。

    现在按F5运行,程序就会自动定位到你要调试的内存分配语句,这时候看call stack的信息会很有帮助。

 

7、内存泄漏及检测(英文)  http://blog.csdn.net/mikefeng/article/details/1765613

其中包含造成内存泄露的原因类型


 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章