Delete怎麼分別刪除指標和物件?使用者10044172007872020-04-02 18:57:38

恩,你已經注意到了delete 指標實際上釋放了指標所指的堆記憶體,但指標本身是一個32位(在32位機器上)的無符號整數。

其值是物件的首地址,這個值並沒變。也就是說,你用delete後,不但指標任然存在,而且其內容都沒有變換。他本身的釋放在超過他生命週期的時候銷燬。然而現在指標所指的記憶體已經不可用了,再次操作其內容將會發生記憶體錯誤(比如再次delete)。所以,安全的做法是讓指標值等於NULL(如果指標是NULL,delete多少次都可以!)。如果你在釋放指標後,又立即分配新的值,那麼賦值NULL步驟多餘。