c++告訴我們在回收new配置設定的單個對象的記憶體空間的時候用delete,
回收new[ ]配置設定的一組對象的記憶體空間的時候用 delete[ ];
從運作結果中分析,delete f在回收空間的過程中, (代碼一中:)隻有f[0]這個對象調用了析構函數,其他對象如:f[1], f[2]并沒調用自身的析構函數; 這就是問題的症結所在。如果用 delete[],則在回收空間之前所有對象都會首先調用自己的析構函數。
基本類型的對象沒有析構函數,是以回收基本類型組成的數組空間用 delete 和 delete[] 都是應該可以的;但是對于類對象數組,隻能用 delete[]。對于 new 的單個對象,隻能用 delete 不能用 delete[] 回收空間。
是以一個簡單的使用原則就是:new 和 delete、new[] 和 delete[] 對應使用。
~