內存泄露(Memory leak)指的是,在程序中動態申請的內存,在使用完后既沒有釋放,又無法被程序的其他部分訪問。內存泄露是在開發大型程序中最令人頭疼的問題,以至于有人說,內存泄露是無法避免的。其實不然,防止內存泄露要從良好的編程習慣做起,另外重要的一點就是要加強單元測試(Unit Test),而valgrind就是這樣一款優秀的工具。
(1):程序發生內存泄露的條件及各種情況:
a: 內存申請忘記釋放(malloc,free();new,delete);
b:申請內存大小不正確((char*)malloc(0));
c:free()函數使用不正確(int a[];free(a)釋放了棧區參數);
d:一段內存釋放多次(1個malloc,多個free());
(2):檢測程序是否發生內存泄露:
方法有二:
a:模仿用戶長時間使用設備;
b:針對某個具體的測試用例。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
內存泄漏
+關注
關注
0文章
38瀏覽量
9172 -
單元測試
+關注
關注
0文章
33瀏覽量
3092
發布評論請先 登錄
相關推薦
如何發現內存泄漏
檢測兩個角度介紹在 Linux 環境進行內存泄漏檢測的方法,并重點介紹靜態分析工具 BEAM、動態監測工具 Valgrind 和 rational purify 的使用
如何寫一個內存泄漏檢測工具
如何確定有內存泄露問題,如何定位到內存泄露位置,如何寫一個內存泄漏檢測工具? 1:概述 內存泄露本質:其實就是申請調用malloc/new,
什么是內存泄漏?如何避免JavaScript內存泄漏
JavaScript 代碼中常見的內存泄漏的常見來源: 研究內存泄漏問題就相當于尋找符合垃圾回收機制的編程方式,有效避免對象引用的問題。
發表于 10-27 11:30
?149次閱讀
高級內存調試和泄漏檢測1.0版
它可以回答的問題和可以解決的問題包括:
·我使用了多少內存?
·我的代碼中哪些部分分配的內存最多?
·是否存在內存泄漏--我在哪里沒有釋放內存
發表于 08-28 08:05
細說Linux內存泄漏檢測實現原理與實現
在使用沒有垃圾回收的語言時(如 C/C++),可能由于忘記釋放內存而導致內存被耗盡,這叫 內存泄漏。由于內核也需要自己管理內存,所以也可能出
發表于 07-03 09:22
?344次閱讀
記一次Rust內存泄漏排查之旅
在某次持續壓測過程中,我們發現 GreptimeDB 的 Frontend 節點內存即使在請求量平穩的階段也在持續上漲,直至被 OOM kill。我們判斷 Frontend 應該是有內存泄漏了,于是開啟了排查
評論