內存泄漏指由于疏忽或錯誤造成程序未能釋放已經不再使用的內存的情況。內存泄漏并非指內存在物理上的消失,而是應用程序分配某段內存后,由于設計錯誤,導致在釋放該段內存之前就失去了對該段內存的控制,從而造成了內存的浪費。內存內存泄漏幾個常見情景如下:
1.new和delete沒有匹配
這種情況是最容易出錯的。一般出錯的地方像如下的例子,在指針p的值被另一個函數所使用。
2.在釋放對象數組時,沒有使用delete[]
3.雙指針沒有完全釋放
當存在雙重指針的時候,正確的釋放方法如下面所示:
4.缺少拷貝構造函數。
在類里存在成員變量是指針時,在進行賦值運算和按值傳參時,必須重載拷貝構造函數,重新實現其指針拷貝的部分.