天天看點

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

  c++告訴我們在回收new配置設定的單個對象的記憶體空間的時候用delete,

          回收new[ ]配置設定的一組對象的記憶體空間的時候用 delete[ ];

從運作結果中分析,delete f在回收空間的過程中, (代碼一中:)隻有f[0]這個對象調用了析構函數,其他對象如:f[1], f[2]并沒調用自身的析構函數; 這就是問題的症結所在。如果用 delete[],則在回收空間之前所有對象都會首先調用自己的析構函數。

   基本類型的對象沒有析構函數,是以回收基本類型組成的數組空間用 delete 和 delete[] 都是應該可以的;但是對于類對象數組,隻能用 delete[]。對于 new 的單個對象,隻能用 delete 不能用 delete[] 回收空間。

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

~                                                                                  

繼續閱讀