qt 關於記憶體洩露的檢測:
工具篇關於qt 記憶體洩露的檢測工具有很多種,一下挑幾種來說:
1、檢測已分配資源, 第乙個工具是乙個記憶體資源使用的***.它只能在模擬器上進行除錯.可以使用快捷鍵來呼叫
按鍵 功能
ctrl+alt+shift+a 顯示已分配堆單元的數量
ctrl+alt+shift+b 顯示已分配的檔案伺服器資源的數量
ctrl+alt+shift+c 顯示已分配的視窗伺服器資源的數量
2、堆檢測巨集,第二個工具可以在你指定的**塊中檢測記憶體的分配情況.只需要把這些巨集加入你要檢測的**部分即可:
巨集 功能
__uheap_mark 開始檢測堆的使用狀況
__uheap_check(n) 檢測自上乙個__uheap_mark是否有』n』個堆被分配(尚未釋放)
__uheap_checkall(n) 檢測是否有』n』個堆已分配
__uheap_markend 檢測結束,並檢測在__uheap_mark之後有沒有未被釋放的堆
__uheap_markendc(n) 檢測結束,並檢測在__uheap_mark之後有無』n』個未被釋放的堆
簡單示例:
這是乙個簡單的使用示例
gldef_c tint e32main()
__uheap_mark;
ctrapcleanup* cleanupstack=ctrapcleanup::new();
// 在堆檢測過程中捕獲所有可能發生的異常
trapd(error,consolemainl());
__assert_always(!error,user::panic(_l("pep"),error));
delete cleanupstack;
__uheap_markend;
return 0;
__uheap_check(2); //檢測在__uheap_mark之後有2個堆單元被分測(a2,a3)
__uheap_checkall(3); //檢測三個堆已被分配(a1,a2,a3)
delete(a2);
__uheap_markend; // 結束檢測,a3記憶體洩露
3、使用hooklogger檢測工具
安裝方法 傳送門
具體使用方法 傳送門
4、使用valgrind檢測工具
valgrind是一款非常強大的工具**,它包含有包括記憶體檢測、cpu監測等多種工具,其中最常用的是記憶體檢測功能,它能監測出以下的各種記憶體錯誤:
1. 訪問非法記憶體區域
2. 使用未被初始化的記憶體區域
3. 非法釋放記憶體,比如多次free乙個記憶體
4. 記憶體洩露
小試牛刀:
valgrind記憶體檢測中五種記憶體丟失的解釋
結果示例:
leak summary:
definitely lost: 140 bytes in 5 blocks.
indirectly lost: 1,252 bytes in 41 blocks.
possibly lost: 0 bytes in 0 blocks.
still reachable: 36 bytes in 1 blocks.
suppressed: 0 bytes in 0 blocks.
1) still reachable: 表示****存在程式執行完的時候,仍舊有指標指向它,因而,這種內存在程式執行結束之前可以釋放。一般情況下valgrind不會報這種洩漏,除非使用了引數 –show-reachable=yes。
2) definitely losg: 明確地已經洩漏了,因為在程式執行完的時候,沒有指標指向它, 指向它的指標在程式中丟失了。一般這種洩漏常見,而且比較難發現問題所在。
3) indirectly lost: 間接地 ????????????????
4) possibly lost: 發現了乙個指向某塊記憶體中部的指標,而不是指向記憶體塊頭部。這種指標一般是原先指向記憶體塊頭部,後來移動到了記憶體塊的中部,還有可能該指標和該記憶體根本就沒有關係,檢測工具只是懷疑有記憶體洩漏。
5) suppressed:
例項現象篇
qt記憶體洩漏檢測 qt 關於記憶體洩漏的檢測
qt 關於記憶體洩露的檢測 工具篇關於qt 記憶體洩露的檢測工具有很多種,一下挑幾種來說 1 檢測已分配資源,第乙個工具是乙個記憶體資源使用的 它只能在模擬器上進行除錯.可以使用快捷鍵來呼叫 按鍵 功能 ctrl alt shift a 顯示已分配堆單元的數量 ctrl alt shift b 顯示...
qt記憶體洩漏檢測 VLD記憶體洩漏檢測工具
vld記憶體工具可以為每個洩漏的塊提供完整的堆疊跟蹤,包括原始檔和行號資訊,從而快速找到記憶體洩漏點。注 僅支援windows平台。在main.cpp中新增 include後以除錯模式執行即可檢測記憶體洩漏。include int main int argc,char ar main.cpp 5 l...
記憶體洩漏檢測
一 記憶體洩漏 記憶體洩漏是程式設計中常常見到的乙個問題.記憶體洩漏往往會一種奇怪的方式來表現出來,基本上每個程式都表現出不同的方式.但是一般 最後的結果只有兩個,乙個是程式當掉.乙個是系統記憶體不足.還有一種就是比較介於中間的結果程式不會當,但是系統的反映時間明顯降低,需要定時的 reboot才會...