1. 程式人生 > >成對使用new和delete時要採取相同形式

成對使用new和delete時要採取相同形式

  • delete 基本型別直接呼叫free。 複雜型別先呼叫解構函式,再呼叫operator delete. delet[] 基本型別直接呼叫operator delete. 複雜型別先取出指標前面的四個位元組的數字,決定呼叫幾次解構函式,再呼叫operator delete.在這裡需要注意的是如果在這裡呼叫delet而不是delet[]程式會崩潰。為什麼會崩潰,當直接呼叫delet的時候,系統不知道存入了幾個函式,所以先呼叫一次解構函式把0位置的函式析構掉,然後再呼叫operator delete p,但是這個時候這個指向陣列的指標的位置是p-4而不是p,p指向的無意義,所以就崩潰掉了。