1. 程式人生 > >C++中的delete和delete[]區別

C++中的delete和delete[]區別


從執行結果中我們可以看出,delete p1 在回收空間的過程中,只有 p1[0] 這個物件呼叫了解構函式,其它物件如 p1[1]、p1[2] 等都沒有呼叫自身的解構函式,這就是問題的癥結所在。如果用 delete[],則在回收空間之前所有物件都會首先呼叫自己的解構函式。
基本型別的物件沒有解構函式,所以回收基本型別組成的陣列空間用 delete 和 delete[] 都是應該可以的;但是對於類物件陣列,只能用 delete[]。對於 new 的單個物件,只能用 delete 不能用 delete[] 回收空間。
所以一個簡單的使用原則就是:new 和 delete、new[] 和 delete[] 對應使用。