回覆列表
-
1 # 子子健康
-
2 # 程式猿來導事
C/C++開發如何避免記憶體洩露,首先得了解記憶體洩露如何產生以及如何檢查:
記憶體洩漏指由於疏忽或錯誤造成程式未能釋放已經不再使用的記憶體的情況。記憶體洩漏並非指記憶體在物理上的消失,而是應用程式分配某段記憶體後,由於設計錯誤,導致在釋放該段記憶體之前就失去了對該段記憶體的控制,從而造成了記憶體的浪費。記憶體記憶體洩漏幾個常見情景如下:
1.new和delete沒有匹配這種情況是最容易出錯的。一般出錯的地方像如下的例子,在指標p的值被另一個函式所使用。
2. 在釋放物件陣列時,沒有使用delete[]3.雙指標沒有完全釋放當存在雙重指標的時候,正確的釋放方法如下面所示:
4.缺少複製建構函式。在類裡存在成員變數是指標時,在進行賦值運算和按值傳參時,必須過載複製建構函式,重新實現其指標複製的部分.
檢測是否存在記憶體洩漏問題:
1.在程式中包括以下語句:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
2.新增_CrtDumpMemoryLeaks();
使用解構函式,在c++中,類在宣告存在期結束後會呼叫解構函式,你可以在解構函式中解引用記憶體開拓容量,這樣可以有效避免記憶體洩漏,或者使用java和c#,這兩種語言有垃圾回收站,加油