C中delete和delete的區別

2021-03-05 09:20:15 字數 4596 閱讀 1999

1樓:千鋒教育

c++中delete和delete的區別從例項中比較如下:

#include ;

using namespace std;

class t

~t()

};int main()

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

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

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

2樓:福喜

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

很多人注意到了這個問題,但是卻不清楚為什麼要這樣做,不這樣做行不行。

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

對於 (1),毫無疑問 delete 和 delete 是等同的。但是對於 (2),情況就發生了變化。

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

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

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

c++中delete和delete的區別

3樓:育知同創教育

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

c++中delete和delete的區別

4樓:千鋒教育

c++中delete和delete的區別如下:

在**用 new 分配的單個物件的記憶體空間的時候用 delete,**用 new 分配的一組物件的記憶體空間的時候用 delete。

程式舉例說明:

#include ;

using namespace std;

class t

~t()

};int main()

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

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

c++中delete和delete的區別

5樓:du知道君

你是不是問 delete 和 delete 的區別? 一個是釋放單個物體 比如 : class a;...

a *p=new a(); 一個是釋放物體陣列 a *p=new a[50]; delete a;

c++中delete和delete的區別

6樓:千鋒教育

delete 是刪除一個變數並且釋放其分配的記憶體.一般用在非內部資料型別的物件上.

delete 刪除一個陣列,釋放分配的記憶體.

上面是運算子.

free() 是c++/c語言的標準庫函式,不能用在非內部資料型別的物件上,滿足不了動態物件的要求.

7樓:匿名使用者

一直對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 對應使用。

8樓:匿名使用者

是說delete和delete的區別麼?

前者銷燬的只是指標指向的一個物件,後者是刪除一組(一個陣列)

c++中delete和delete的區別

9樓:千鋒教育

一直對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 對應使用。

c++中delete和delete的區別

10樓:千鋒教育

主要差別是 是否呼叫解構函式

delete data 會自動呼叫data陣列每個元素的解構函式

delete data則不會

11樓:匿名使用者

沒區別!!!你確定你問題問的對?

drop table,truncate table和delete的區別

12樓:深圳海楓科技****

1、drop刪表,表結構將刪了,當然資料也不存在了2、truncate和delete刪資料,表結構還在3、delete可以帶條件刪除,truncate是全部刪除4、delete刪除會寫日誌,truncate不寫5、delete效率低,資料可以恢復,truncate效率高,資料不可恢復

truncate 和delete的區別

13樓:瑛夫科技

truncate table 在功能上與不帶 where 子句的 delete 語句相同:二者均刪除表中的全部行。但 truncate table 比 delete 速度快,且使用的系統和事務日誌資源少。

delete 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。

truncate table 通過釋放儲存表資料所用的資料頁來刪除資料,並且只在事務日誌中記錄頁的釋放。

truncate,delete,drop放在一起比較:

truncate table:刪除內容、釋放空間但不刪除定義。

delete table:刪除內容不刪除定義,不釋放空間。

drop table:刪除內容和定義,釋放空間。

在excel中delete鍵失靈

檢查一下,鍵盤上的 scroll lock 燈有沒有亮,如果亮著的,點選旁邊的那個 scroll lock 鍵 取消它。scroll lock 鍵在f12右邊的那三個鍵中間。把鍵盤翻過來拍幾下,可能是髒東西阻礙了資訊的傳達,鍵盤晶片沒有反應。如果不行把不靈的鍵扣下來,看看裡面是不是有髒東西。弄出來就...

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

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

c中的delete的操作到底是怎麼回事

00399208 代表的是抄p這個指標指向的地址值,在delete之前輸出的那個5代表p這個指標指向的一個int空間裡面存放的數值 在你delete之後,p這個指標沒有變化,仍然是00399208,但是它指向的空間已經被釋放了,所以輸出的就是一個 不確定 的數值 57266307.對於問題的補充 2...