C 中delete和delete的區別

2023-02-25 16:20:02 字數 1508 閱讀 6714

1樓:網友

請問你想問的是不是"delete"與"delete"的區別?

兩者之間區別的通俗理解是,delete是釋放乙個單位的堆空間,而delete是刪除多個單位堆空間。

比如int *p1=new int;//釋放p1使用delete p1;或者deletep1;都是可以的,表示釋放1*sizeof(int)個堆空間。

int *p2=new int[10];/如果需要完全釋放首位址為p2的堆空間,需要使用deletep2;,順便說一下,delete p2;的結果是p2開始int長度的堆空間被釋放,剩下的9*sizeof(int);個堆空間仍然留著。

ps:實際嘗試下來(比如vs 2013編譯器),針對比如int,char之類的簡單陣列,delete與delete效果完全相同,但是遇到釋放class或者struct型別動態空間時候,卻會產生不同結果。比如。

class test

~test()

};test *p=new test[10];

deletep;

//delete p;

這時候delete p與deletep會產生不同結果,前者會直接報錯。

感覺是delete比delete更加「細心」,也就是delete僅僅停留在表面,而delete不但會逐個釋放第一層t為首的堆空間,而且在釋放前還會讀取此空間上存放的位址,進入實體類物件的空間,因此會呼叫類內的析構函式。

2樓:育知同創教育

delete or delete?問題沒說清楚啊 如果是上面所述 delete主要是用來釋放陣列 特別是自定義陣列 常常和new配合使用。

deleteóë delete []çø±ð

3樓:地瓜說機

c++告訴我們在**用 new 分配的單個物件的記憶體空間的時候用 delete,**用 new 分配的一組物件的記憶體空間的時候用 delete。 關於 new 和 delete,其中又分為兩種情況:(1) 為基本資料型別分配和**空間;(2) 為自定義型別分配和**空間。

4樓:匿名使用者

說說函式方法的詳細資訊~~~

c++öðdeleteºídeleteµäçø±ð

c++中new和delete

5樓:回頭的世界

1)new 和 delete 必須成對出現;

2)new 底層呼叫作業系統堆記憶體管理函式heapalloc來分配堆記憶體;

3)delete 操作符底層呼叫api介面函式heapfree來釋放堆記憶體;

可以在vc++下除錯,通過呼叫棧來分析new,delete操作涉及的與作業系統的互動過程。

6樓:匿名使用者

當然要成對出現的,這裡delete del,del指向的是以前申請的,當然也是用new申請的。

c++öðdeleteºídeleteµäçø±ð

關於C 中delete出錯的問題

delete data 這種使用方法,是釋放二維陣列時採用的。你改為delete data 試一試。c delete錯誤 哪行啊 彙編裡面有個立即數的概念,高階語言程式設計裡面也有,你段位不夠所以不知道 一般程式在記憶體中有三處空間 最下面的是靜態記憶體,放靜態資料,本身等。可以粗略的認為.exe有...

photoshop刪除選區delete不能用怎麼回事

確定圖層是否被鎖定,確定是選的是你要刪的那個圖層 ps中為什麼按delete刪除不了 ps中為什麼bai 用dudelete鍵不能刪除反選圖層 建zhi立選區反選後 dao不能刪除版原因分析如下 權該圖層是向量圖層 如矩形工具生成的顏色圖層,文字圖層 需刪格化後。該圖層是智慧型物件圖層 未刪格前de...

autocad如何刪除文字,用Delete不管用,無法選中

樓主說的文字不能選中的情況有以下 1 文字在無意中放到了defpoints圖層,而該圖層為系統預設且無法刪除的非列印圖層,若不注意把文字放入該圖層,則會產生無法選中無法編輯卻又看得到的古怪情況。解決辦法 首先你可以看看你的 0圖層 是否被關閉,若 0圖層 關閉那麼defpoints圖層的任何東西都無...