使用new和delete管理動態記憶體的常見問題

2021-10-03 06:12:49 字數 360 閱讀 5611

忘記delete記憶體。

忘記釋放動態記憶體會導致「記憶體洩漏」的問題,因為這種記憶體永遠不可能被歸還給自由空間。查詢記憶體洩漏錯誤是非常困難的,因為通常應用程式執行很長時間後,真正耗盡記憶體時,才能檢測到這種錯誤。

使用已經釋放掉的物件。

通過在釋放記憶體後將指標置為空,有時可以檢測出這種錯誤。

同一塊記憶體釋放兩次。

當有兩個指標指向相同的動態記憶體分配物件時,可能發生這種錯誤。如果對其中乙個指標進行了delete操作,物件的記憶體就被歸還給自由空間了。如果我們隨後又delete第二個指標,自由空間就可能被破壞。

所以堅持使用智慧型指標,就可以避免這些問題。對於一塊記憶體,只有在沒有任何智慧型指標指向它的情況下,智慧型指標才會自動釋放它。

new和delete的使用

一 基本資料型別的動態分配 new和delete已經完全包含malloc和free的功能,並且更強大 方便 安全。使用動態分配記憶體時不能忘記釋放記憶體,不要忘記出錯處理!下面先看new和delete的基本使用方法。includeusing namespacestd intmain 釋放記憶體del...

C C 記憶體管理 new和delete

c 語言中的動態記憶體管理方式有malloc calloc realloc 和 free,但是 malloc 和 free 是函式,new 和 delete 是 c 用於管理堆記憶體的兩個運算子 1.內建型別操作void test1 動態申請10個int型別的空間。並初始化為 delete p1 d...

動態管理記憶體之new和delete

cpp中使用new運算子來動態申請特定數量的記憶體。一般通過new顯示申請的內存在變數銷毀的時候要通過delete顯示釋放記憶體還給系統。使得這塊記憶體空間可以被作業系統 以作它用。假如程式中動態分配了很多記憶體空間,但使用完畢後都不釋放,則這些空間無法用於儲存別的資料,將造成嚴重的記憶體浪費。一 ...