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

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

new delete
malloc  free
new [ ] delete[ ]


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

1、當釋放的對象是數據p[n]時,用delete只會調用p[0]的析構函數,其他後續的對象的析構函數不會被調用,這就有可能導致問題。

2、當釋放的對象是數據p[n]時,用delete[ ]會在釋放p之前對p[0]......p[n-1]調用析構函數,再釋放自己。


注:

如果p[n]中的對象類型是基本類型(沒有析構函數)則不會出現問題,如果是自定義類型,那麼將會導致一些內存相關問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章