摘要: 刪除一個動態分配的對象時,必須調用它的析構函數。如果這個類型是不完整的,即只有聲明沒有定義,那么析構函數可能會沒被調用。這是一種潛在的危險狀態,所以應該避免它。對于類模板及函數模板,風險會更大,因為無法預先知道會使用什么類型。使用 checked_delete 和 checked_array_delete, 可以解決這個刪除不完整類型的問題。它沒有運行期的額外開銷,只是直接調用 delete, 因此說 checked_delete 帶來的安全性實際上是免費的。
如果你需要在調用delete時確保類型是完整的,就使用 checked_delete 。
閱讀全文