天天看點

visualstudio下delete與delete[]的差別

按照大多數書本上來說:

  • delete釋放new配置設定的單個對象指針指向的記憶體
  • delete[]釋放new配置設定的對象數組指向的記憶體

但是在visualstudio編譯環境下結果有所不同

  1. 針對簡單的類型使用new配置設定後的不管是單個對象還是對象數組都能夠通過delete或者delete[]來釋放所有的記憶體。原因在于配置設定簡單對象時,記憶體大小已經确定,系統可以記憶并且進行管理,在析構時,系統并不會調用析構函數。
  2. 針對使用者自定義的類類型,如果是配置設定的單個對象那麼調用delete會正确釋放對象占用的記憶體并調用對象的析構函數,但是對于對象數組,你如果使用的是delete而不是delete[],對不起你隻能釋放數組中第一個對象占用的記憶體和調用第一個對象的析構函數。

總的來說,為了不出漏子,還是規範一點吧。對于單個對象使用delete,對于對象數組使用delete[]。