係統粉 > 電腦問答 > 其他問答

已解決請問內存泄露如何調試

提問者:yura_sakura  |  瀏覽次  |  提問時間:2016-12-20  |  回答數量:3

請問內存泄露如何調試手動檢測當使用 C/C++ 進行開發時,采用良好的一致的編程規範是防止內存問題第一道也是最重要的措施。檢測是編碼標準的補充。二者各有裨益,但結合使用效果特別好。專業的 C 或 C+...

已有3條答案
過往的羈絆

過往的羈絆

回答數:80850  |  被采納數:17

手動檢測

當使用 C/C++ 進行開發時,采用良好的一致的編程規範是防止內存問題第一道也是最重要的措施。檢測是編碼標準的補充。二者各有裨益,但結合使用效果特別好。專業的 C 或 C++ 專業人員甚至可以瀏覽不熟悉的源代碼,並以極低的成本檢測內存問題。通過少量的實踐和適當的文本搜索,您能夠快速驗證平衡的 *alloc() 和 free() 或者 new 和 delete 的源主體。人工查看此類內容通常會出現像清單 1 中一樣的問題,可以定位出在函數 LeakTest 中的堆變量 Logmsg 沒有釋放。
2016-12-20 14:57:23
讚 8085
溫溫的暖暖小姐

溫溫的暖暖小姐

回答數:11295  |  被采納數:1

你好,據我了解如下:
內存泄漏形象的比喻是“操作係統可提供給所有進程的存儲空間正在被某個進程榨幹”,最終結果是程序運行時間越長,占用存儲空間越來越多,最終用盡全部存儲空間,整個係統崩潰。所以“內存泄漏”是從操作係統的角度來看的。這裏的存儲空間並不是指物理內存,而是指虛擬內存大小,這個虛擬內存大小取決於磁盤交換區設定的大小。由程序申請的一塊內存,如果沒有任何一個指針指向它,那麼這塊內存就泄漏了。
希望我的回答對你有所幫助。望采納!
2016-12-20 15:49:09
讚 1129
玩世誰恭

玩世誰恭

回答數:40648  |  被采納數:1

內存泄露:有可能是你自己代碼寫的不好,忘記了釋放自己代碼裏申請的內存, 也有可能是你使用了一個寫的不好的庫,庫本身有問題,這裏說的庫不僅僅是第三方庫,甚至於各種語言的運行時庫也有可能出現(再高的人都免不了出BUG),還甚至於操作係統的庫,因為操作係統的BUG也多的很(當然係統一般情況不會出現這些低級的錯誤)。 死循環不能說是內存泄露,概念上應稱為死鎖,死鎖的確是有可能會導致內存無限量增長,但其與內存泄露有本質區別,盡管有時候它們導致的結果在內存層麵是相同的。
希望對你有所幫助
2016-12-21 12:31:14
讚 4064
相關問答
最新其他問答
解決方法