C 中delete和delete的區別

時間 2022-03-25 21:15:27

1樓:匿名使用者

一直對c++中的delete和delete的區別不甚了解,今天遇到了,上網查了一下,得出了結論。做個備份,以免丟失。

c++告訴我們在**用 new 分配的單個物件的記憶體空間的時候用 delete,**用 new 分配的一組物件的記憶體空間的時候用 delete。

關於 new 和 delete,其中又分為兩種情況:(1) 為基本資料型別分配和**空間;(2) 為自定義型別分配和**空間。

請看下面的程式。

#include ;

using namespace std;

class t

~t()

};int main()

大家可以自己執行這個程式,看一看 delete p1 和 delete p1 的不同結果,我就不在這裡貼執行結果了。

從執行結果中我們可以看出,delete p1 在**空間的過程中,只有 p1[0] 這個物件呼叫了析構函式,其它物件如 p1[1]、p1[2] 等都沒有呼叫自身的析構函式,這就是問題的癥結所在。如果用 delete,則在**空間之前所有物件都會首先呼叫自己的析構函式。

基本型別的物件沒有析構函式,所以**基本型別組成的陣列空間用 delete 和 delete 都是應該可以的;但是對於類物件陣列,只能用 delete。對於 new 的單個物件,只能用 delete 不能用 delete **空間。

所以乙個簡單的使用原則就是:new 和 delete、new 和 delete 對應使用。

2樓:匿名使用者

你應該想問delete和delete 的區別吧?

c中new和delete的用法

肥仙女 在c 程式設計中,使用new分配的陣列可用delete釋放。這裡釋放的是動態分配的陣列空間,而不是靜態分配的陣列空間,詳細步驟 1 例如,我們動態建立了一個一維int陣列arr,現在需要將它釋放。2 這時只需要使用delete陣列名即可。3 注意,要釋放陣列所佔的記憶體,不能少。否則,用de...

delete指標的指標,delete掉的是什麼

du瓶邪 簡單的測試 c c code 此處t是不完整型別 編譯會出錯 typedef char t typedef char type must be complete sizeof t 1 1 void sizeof type must be complete 此處t是完整型別 編譯不會出錯 t...

js刪除陣列中的元素delete和splice的區別

珞硃砂 splice刪除後將返回一個新陣列,包含被刪除的元素,delete則返回布林值。splice刪除元素的同時會縮短原陣列長度,delete只是刪除元素,並不會修改陣列長度。splice可以批量刪除多個連續的元素,delete只能逐一刪除。方法一 delete 刪除陣列,delete texta...