Linux記憶體洩漏如何檢測

2021-10-22 21:36:20 字數 717 閱讀 4428

記憶體洩漏一般情況下是指從堆中申請的記憶體沒有釋放。應用程式呼叫malloc,realloc,new函式從堆中申請一塊記憶體,在使用完畢後,需要呼叫free/new來釋放記憶體。如果缺少釋放,就會導致記憶體洩漏。久而久之,整個系統的記憶體將會慢慢耗盡。

那我們該如何及時發現記憶體洩漏呢?

**review階段,這個階段的代價能夠發現簡單的記憶體洩漏問題

**靜態檢測工具,coverity等等。這類工具比較強大,絕大部分的記憶體洩漏風險都能檢測出來。

執行階段,配合系統有記憶體監視工具,收集一段時間內的堆疊記憶體資訊,觀測增長趨勢,來確定是否有記憶體洩漏。例如:ps,top,cat /proc//status,cat /proc//maps等等。

執行階段,記憶體檢測工具。這類工具也比較多。常用如下:

在這幾款工具中,設定最簡單的應該是memwatch了,和dmalloc一樣,它能檢測未釋放的堆記憶體,記憶體被釋放多次,記憶體非法訪問問題。

有人會問了還有沒有其他的方法來檢測記憶體洩漏呢?答案是有的。

過載new 和 delete。這也是大家編碼過程中常常使用的方法。當然也可以過載malloc和free。其思路:每次new中開闢一塊記憶體就用鍊錶把這個記憶體的資訊儲存下來,每次用delete刪除一塊記憶體就從鍊錶中刪除這塊記憶體的記錄

採用智慧型指標

記憶體洩漏檢測

一 記憶體洩漏 記憶體洩漏是程式設計中常常見到的乙個問題.記憶體洩漏往往會一種奇怪的方式來表現出來,基本上每個程式都表現出不同的方式.但是一般 最後的結果只有兩個,乙個是程式當掉.乙個是系統記憶體不足.還有一種就是比較介於中間的結果程式不會當,但是系統的反映時間明顯降低,需要定時的 reboot才會...

記憶體洩漏檢測

一 記憶體洩漏 記憶體洩漏是程式設計中常常見到的乙個問題.記憶體洩漏往往會一種奇怪的方式來表現出來,基本上每個程式都表現出不同的方式.但是一般最後的結果只有兩個,乙個是程式當掉.乙個是系統記憶體不足.還有一種就是比較介於中間的結果程式不會當,但是系統的反映時間明顯降低,需要定時的reboot才會正常...

記憶體洩漏檢測

記憶體洩漏檢測 自己寫的 作者 很土 關鍵字 記憶體洩漏 記憶體 debug heap 堆 原作者姓名 很土 介紹簡單說明了一下沒有工具的情況如何運用vc庫中的工具來檢查 的記憶體洩漏問題 讀者評分 8 評分次數 2 正文記憶體洩漏檢測 一 記憶體洩漏 記憶體洩漏是程式設計中常常見到的乙個問題.記憶...