在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]中的對象類型是基本類型(沒有析構函數)則不會出現問題,如果是自定義類型,那麼將會導致一些內存相關問題。