查詢記憶體洩漏的手法總結

2021-09-12 12:24:11 字數 449 閱讀 9041

1,全域性搜尋malloc cudamalloc calloc, 看變數是否都有對應的free cudafree

2,全域性搜尋new,看是否有delete對應

【引申】 new 和 malloc 的區別, malloc只是開闢一段記憶體, new是乙個操作符,所以會做很多任務作,比如呼叫建構函式(申請記憶體並且賦值)。如果構造出錯還會報錯,這些malloc都沒有的功能。

3, 記憶體洩漏一般都是在for迴圈內,如下圖可以測出哪乙個fun有記憶體洩漏,分別在跑完fun的時候 加入測試**,【釋放變數記憶體並且返回false】。

/*code test*/

//free(variable1 of fun1)

//free(variable2 of fun1)

//return false;

for( ****** )

記憶體洩漏問題總結

同事有乙個帶有少量業務邏輯然後更新資料庫某字段的需求 大約900萬資料 執行了幾千條後,發現日誌停住了。使用jvisualvm檢視gc,發現old區和eden區都已經滿了 第一反應是可能存在記憶體洩漏,但是看到系統初始化引數裡面最大堆記憶體大小只有512m,就覺得調大堆記憶體就應該可以了。所以把堆記...

C 記憶體洩漏總結

關於c 全域性變數的釋放問題,一直比較模糊,今天做了乙個測試 一 關於全域性變數的指標型別,程式在退出時,動態建立的物件還存在於記憶體中,導致記憶體洩漏 1 include 2 3 include vld.h 記憶體洩漏檢測工具 4 pragma comment lib,vld.lib 56 usi...

使用UMDH查詢記憶體洩漏

使用umdh之前 1 設定 nt symbol path環境變數,例如用命令列 set nt symbol path c windows symbols。把你自己程式的symbol files pdb 檔案放在跟你執行檔案同一目錄,或者加到 nt symbol path環境變數裡面。2 設定gfla...