C/C++ 内存泄漏检测工具汇总
文章目錄
- 前言
- crtdbg
- 使用
- 原理
- 例子
- Visual Leak Detector(VLD)
- Checkpoint/DumpStatistics
- Windbg
- 騰訊WeTest - TMM
- IBM purify
- VMMap
- Application Verifier
- Cppcheck
前言
本文主要記錄 Windows 下內(nèi)存泄漏檢測(cè)工具;Linux 下首選必須是 Valgrind 啊。
目前待檢測(cè)的程序采用的是 Qt,由于Qt本身的半自動(dòng)內(nèi)存管理機(jī)制,因此好用的檢測(cè)工具真的不容易找…詳細(xì)可看該篇 Qt淺談之一:內(nèi)存泄露(總結(jié))
crtdbg
主要針對(duì) Win32 或者 Qt 程序,debug 模式
使用
#define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h>// main 開始的地方加上: _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); _CrtSetBreakAlloc(1472); //1472為上面內(nèi)存泄漏的塊號(hào)// 注意:或者不在main開始的地方加上,而是在main結(jié)尾加上: _CrtDumpMemoryLeaks();原理
VC++內(nèi)存泄漏檢測(cè)方法(4):【第1篇的補(bǔ)充說(shuō)明】詳解基于Crt的內(nèi)存泄漏檢測(cè)
例子
LiteIDE 是使用Qt寫的應(yīng)用程序,里面大量應(yīng)用了 crtdbg 內(nèi)存泄露檢測(cè)的方法
GitHUb-LiteIDE
Visual Leak Detector(VLD)
貌似僅支持 Visual Studio 2008 ~ Visual Studio 2015 。Release Debug 模式均可!
下載地址
對(duì)于 Debug 模式只在項(xiàng)目中添加動(dòng)態(tài)庫(kù)(個(gè)人不喜歡配置環(huán)境變量的做法),程序退出的時(shí)候就會(huì)提示可能存在內(nèi)存泄漏的地方啦~
對(duì)于 Release 模式使用方法如下:
- 同 Debug 版本在VC中配置好VLD的相關(guān)信息
- 拷貝 Visual Leak Detector\bin\Win64 目錄下所有的文件和 vld.ini 到工程目標(biāo)路徑下
- 在程序入口處的cpp中,定義強(qiáng)制檢測(cè)宏和包含vld頭文件#define VLD_FORCE_ENABLE #include "vld.h"
- 在程序啟動(dòng)和退出時(shí),分別增加以下函數(shù)調(diào)用 VLDGlobalEnable();VLDReportLeaks();//some code...VLDGlobalDisable();
Checkpoint/DumpStatistics
沒試過(guò),貌似主要是MFC?
VC++內(nèi)存泄漏檢測(cè)方法(2):Checkpoint/DumpStatistics
Windbg
看著好像還不錯(cuò),貌似 32/64 bit版本問(wèn)題,我無(wú)法掛上待調(diào)試的程序~
騰訊WeTest - TMM
下載地址
軟件退出時(shí)檢測(cè)內(nèi)存泄漏的工具。不知道為何程序點(diǎn)擊運(yùn)行后,狀態(tài)也一直為 null…
已聯(lián)系開發(fā)團(tuán)隊(duì),但還沒有回應(yīng)~
IBM purify
安裝及破解
使用
一度給予厚望,最后發(fā)現(xiàn)…V7.0.1.0+ 才開始支持64bit 的程序。
但是網(wǎng)絡(luò)上只有V7.0.0.0的安裝包!
使用 IBM Rational PurifyPlus
VMMap
VMMap是一個(gè)進(jìn)程虛擬和物理內(nèi)存分析實(shí)用程序。可以獲得比任務(wù)管理器更詳細(xì)的數(shù)據(jù)!
下載地址
使用見 VMMAP定位內(nèi)存泄露
Application Verifier
微軟推出的代碼驗(yàn)證工具,可以發(fā)現(xiàn)程序代碼中難以察覺的錯(cuò)誤。
其工作機(jī)制可見 Application Verifier使用起步
如果不使用了的話記得移除程序,否則啟動(dòng)程序時(shí)你會(huì)發(fā)現(xiàn)系統(tǒng)非常卡,內(nèi)存占用非常大…
個(gè)人認(rèn)為并不好用!
Cppcheck
下載地址
靜態(tài)代碼檢測(cè)工具,實(shí)測(cè)還行,有點(diǎn)用。
總結(jié)
以上是生活随笔為你收集整理的C/C++ 内存泄漏检测工具汇总的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 提高文档编写能力
- 下一篇: vc 写一个计算机功能,VC++的一个实