[c++] 刪除空指針是否安全?



Answers

來自C ++ 0x標準草案。

$ 5.3.5 / 2 - “[...]或者,delete的操作數的值可能是一個空指針值。[...'”

當然,沒有人會'刪除'具有NULL值的指針,但是這樣做是安全的。 理想情況下,不應該有刪除空指針的代碼。 但是,在循環中刪除指針(例如在容器中)時,它有時很有用。 由於NULL指針值的刪除是安全的,因此可以真正寫入刪除邏輯,而不用顯式檢查要刪除的NULL操作數。

另外,C標準$ 7.20.3.2也表示'空'指針沒有任何動作。

釋放函數使ptr指向的空間被釋放,也就是說,可用於進一步分配。 如果ptr是空指針,則不會發生任何操作。

Question

刪除空指針是否安全?

這是一種很好的編碼風格嗎?




刪除空指針不起作用。 這不是一種好的編碼風格,因為它不是必需的,但它也不錯。

如果您正在尋找良好的編碼習慣,請考慮使用智能指針,因此您根本不需要delete




為了補充ruslik的答案,在C ++ 14中,你可以使用這個構造:

delete std::exchange(heapObject, nullptr);



Related