C 中delete和delete 的區別

2021-06-29 05:17:47 字數 352 閱讀 8682

在c++中,正常的分配與釋放記憶體的對應方法如下:

newdelete

malloc 

free

new [ ]

delete[ ]

delete 和delete[ ]的本質區別是:

1、當釋放的物件是資料p[n]時,用delete只會呼叫p[0]的析構函式,其他後續的物件的析構函式不會被呼叫,這就有可能導致問題。

2、當釋放的物件是資料p[n]時,用delete[ ]會在釋放p之前對p[0]......p[n-1]呼叫析構函式,再釋放自己。

注:如果p[n]中的物件型別是基本型別(沒有析構函式)則不會出現問題,如果是自定義型別,那麼將會導致一些記憶體相關問題。

C 中delete和delete 的區別

c 告訴我們在 用 new 分配的單個物件的記憶體空間的時候用 delete,用 new 分配的一組物件的記憶體空間的時候用 delete。很多人注意到了這個問題,但是卻不清楚為什麼要這樣做,不這樣做行不行。關於 new 和 delete,其中又分為兩種情況 1 為基本資料型別分配和 空間 2 為自...

C 中delete和delete 的區別

c 告訴我們在 用 new 分配的單個物件的記憶體空間的時候用 delete,用 new 分配的一組物件的記憶體空間的時候用 delete。很多人注意到了這個問題,但是卻不清楚為什麼要這樣做,不這樣做行不行。關於 new 和 delete,其中又分為兩種情況 1 為基本資料型別分配和 空間 2 為自...

C 中的delete和delete 區別

一直對c 中的delete和delete的區別不甚了解,今天遇到了,上網查了一下,得出了結論。做個備份,以免丟失。c 告訴我們在 用 new 分配的單個物件的記憶體空間的時候用 delete,用 new 分配的一組物件的記憶體空間的時候用 delete。關於 new 和 delete,其中又分為兩種...