VLD(C++記憶體檢測工具學習2)
本文簡要描述一下在Qt應用中使用VLD來檢測記憶體洩露。本次測試環境:QtCreator2.3 + Qt4.7.4-vs2008 + VS2008 Express.
假定安裝到c:/dev/vld-2.2目錄下。
注:vld最初發表在codeproject.com,這個版本太老了。檢測不準,不能使用。2、建立測試專案:使用QtCreator建立一個Qt GUI專案。
修改.pro檔案,新增如下內容:
- win32 {
- CONFIG(debug, debug|release) {
- # DEFINES += _DEBUG
- # vld 2.2 downloaded from http://vld.codeplex.com/
- VLD_PATH = c:/dev/vld-2.2
- INCLUDEPATH += $VLD_PATH/include
- LIBS += -L$VLD_PATH/lib/Win32 -lvld
- }
- }
修改main.cpp檔案,在main函式上面新增以下程式碼:
- #ifdef _DEBUG
- #include "vld.h"
- #endif
測試1:在MainWindow的建構函式中新增一行程式碼:
- new QWidget(this); // 不會洩露
編譯執行,在QtCreator的應用程式輸出視窗中將會有類似下面的內容:
- Visual Leak Detector Version 2.2 installed.
- Visual Leak Detector Version 2.2 installed.
- No memory leaks detected.
- Visual Leak Detector is now exiting.
(初次執行時可能無法執行,這是因為找不到vld的dll檔案。將C:\dev\vld-2.2\bin\Win32目錄下的內容拷貝到PATH環境變數中所列的某個目錄即可)
測試2:再新增一行程式碼:
- new QWidget(0); // 這個會洩露
- Visual Leak Detector Version 2.2 installed.
- WARNING: Visual Leak Detector detected memory leaks!
- ---------- Block 8 at 0x00EF14E0: 20 bytes ----------
- Call Stack:
- e:\works\test_vld_qt\mainwindow.cpp (18): test_vld_qt.exe!MainWindow::MainWindow + 0x7 bytes
- e:\works\test_vld_qt\main.cpp (10): test_vld_qt.exe!main + 0xA bytes
- e:\qt\4.7.4-vs2008\src\winmain\qtmain_win.cpp (131): test_vld_qt.exe!WinMain + 0x12 bytes
- f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (578): test_vld_qt.exe!__tmainCRTStartup + 0x35 bytes
- f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (403): test_vld_qt.exe!WinMainCRTStartup
- 0x7C817067 (File and line number not available): kernel32.dll!RegisterWaitForInputIdle + 0x49 bytes
- Data:
- 8C 8A 40 00 F8 81 F1 00 68 8A 40 00 00 00 CD CD [email protected] [email protected]
- B0 82 F1 00 ........ ........
- Visual Leak Detector detected 1 memory leak (56 bytes).
- Largest number used: 432 bytes.
- Total allocations: 432 bytes.
- Visual Leak Detector is now exiting.
小結:如上所示,使用vld檢測記憶體洩露很容易,美中不足的是隻能使用VC++編譯器。儘管如此,我們也可以用它來在Win32下檢測記憶體洩露,然後再使用其它編譯器在其它平臺上進行編譯釋出。
相關推薦
VLD(C++記憶體檢測工具學習2)
本文簡要描述一下在Qt應用中使用VLD來檢測記憶體洩露。本次測試環境:QtCreator2.3 + Qt4.7.4-vs2008 + VS2008 Express. 假定安裝到c:/dev/vld-2.2目錄下。 注:vld最初發表在codeproject.com,這個
Visual Leak Detector 2.2.3 Visual C++記憶體檢測工具
Visual Leak Detector是一款免費的、健全的、開源的Visual C++記憶體洩露檢測系統。相比Visual C++自帶的記憶體檢測機制,Visual Leak De
【C/C++】 記憶體檢測工具 memeory check
Backto C/C++ Index *nix – Valgrind: Valgrind是一款用於記憶體除錯、記憶體洩漏檢測以及效能分析的軟體開發工具。Valgrind這個名字取自北歐神話中英靈殿的入口。 Valgrind的最初作者是Julian Seward
C++記憶體檢查工具valgrind
安裝apt-get install valgrind注意在Ubuntu 16.10上,需要python2為預設python版本。執行啟動C++程式前加上valgrind即可。valgrind ./bui
.NET Memory Profiler 託管環境記憶體檢測工具,.net記憶體回收與Dispose﹐Close﹐Finalize方法
2.使用物件 3.釋放物件 二.建立物件 1.建立物件實際分為兩個步驟?變數型別宣告和初始化物件 2.變數型別宣告(declare),如? FileStream fs 這行程式碼會在當前的變數作用域空間(棧或堆)裡建立一個叫做fs的變數?至少四個位元組吧(因為要存一個物件的地址) 3.初始化物件
記憶體檢測工具使用(Linux、VS)
一、Linux中記憶體檢測工具(valgrind) 記憶體檢查工具: valgrind linux上線上安裝:yum install valgrind 使用方法: valgrind 你的
Windows和Linux記憶體檢測工具:Valgrind,Visual Leak Detector,CppCheck, Cpplint
1 Linux記憶體洩漏檢測工具ValgrindValgrind簡介 Valgrind是一套Linux下,開放原始碼(GPL V2)的模擬除錯工具的集合。Valgrind由核心(core)以及基於核心的其他除錯工具組成。核心類似於一個框架(framework),
iOS記憶體檢測工具Analyze的使用
XCode的Analyze可以分析到專案哪裡有記憶體洩露. 方法:xcode----product-----Analyze(快捷鍵:Shift + Cmd + B) iOS的分析工具可以發現編譯中的warning,記憶體洩漏隱患,甚至還可以檢查出log
非常好用的記憶體檢測工具
推薦理由:準確、快速大家比較熟悉的記憶體檢測工具有MemTest、微軟記憶體檢測(Microsoft Memory Diagnostic)等。但就本人的使用經歷來說,微軟的記憶體檢測工具更實用一些。下載地址:http://www.box.net/shared/03b7xbvk
Android 記憶體檢測工具
所謂記憶體洩漏,是指本該被回收的記憶體由於某種原因繞開了GC回收演算法,從而導致該記憶體無法被有效資料使用而使得總記憶體減小的情況。 記憶體洩漏會導致記憶體消耗的增加,大量的消耗會使得APP OOM,特別是在一些記憶體比較小的機器上。下面我們看看有哪些工具可以
Linux下記憶體檢測工具:asan
Linux下記憶體檢測工具:asan ASAN(Address-Sanitizier)早先是LLVM中的特性,後被加入GCC 4.8,在GCC 4.9後加入對ARM平臺的支援。因此GCC
Visual C++ 記憶體洩露檢測工具(VLD)
簡述 C/C++ 程式越複雜,記憶體的管理顯得越重要,稍有不慎就會出現洩漏。如果記憶體洩漏不是很嚴重,在短時間內對程式不會有太大影響,這也使得記憶體洩漏問題有很強的隱蔽性,不易被發現。然而不管記憶體洩漏多麼輕微,當程式長時間執行時,其破壞力是驚人的 - 從效能
使用Visual Leak Detector for Visual C++ 捕捉記憶體洩露---Visual C++記憶體洩露檢測—VLD工具使用說明
以下經過測試: 使用Visual Leak Detector for Visual C++ 捕捉記憶體洩露 1、下載vlc 2、建立應用並配置 c/c++ -> General -> Additional Include Directories = C:\P
Visual C++記憶體洩露檢測—VLD工具使用說明d
轉自:http://www.cnblogs.com/lidabo/archive/2012/07/19/2599745.html http://blog.csdn.net/zlQQhs/article/details/10039179 1.VLD工具概述 Visual
c++記憶體洩漏檢測工具(上)
原文連結: http://blog.csdn.net/beanjoy/article/details/7578372 1/ VC自帶的CRT:_CrtCheckMemory 偵錯程式和 CRT 除錯堆函式 用法 /********
C 記憶體洩漏檢測工具
所有使用動態記憶體分配(dynamic memory allocation)的程式都有機會遇上記憶體洩露(memory leakage)問題,在Linux裡有三種常用工具來檢測記憶體洩露的情況,包括: mtrace dmalloc memwatch 1. mtrace
Unix下C程式記憶體洩漏檢測工具Valgrind安裝與使用
Valgrind是一款用於記憶體除錯、記憶體洩漏檢測以及效能分析的軟體開發工具。 Valgrind的最初作者是Julian Seward,他於2006年由於在開發Valgrind上的工作獲得了第二屆Google-O'Reilly開原始碼獎。 Valgrind遵守GNU通用公共許
Windows 7 下 vs2010記憶體洩漏檢測工具VLD的使用
1 環境和軟體 Windows7 32位系統 Visual Studio 2012 旗艦版 vld-2.2.3-setup.exe 大小1.04M 2 步驟 1)下載安裝 下載好 vld-2.2.3-setup.exe(大小1.04
Windows/Linux下C/C++記憶體洩露檢測工具
一 Window下的記憶體洩露檢測(以VC++環境為例) 靈活自由是C語言的一大特色,但這個特色也難以避免的帶來一些副作用,比如記憶體洩露。眾所周知,記憶體洩露的問題比較複雜,程式正常執行時你看不出它有任何異常,但長時間執行或在特定條件下特定操作重複多次時,它才暴露出來。所
Linux C 程式設計記憶體洩露檢測工具(二):memwatch
Memwatch簡介 在三種檢測工具當中,設定最簡單的算是memwatch,和dmalloc一樣,它能檢測未釋放的記憶體、同一段記憶體被釋放多次、位址存取錯誤及不當使用未分配之記憶體區域。請往http://www.linkdata.se/sourcecode.html下載最