偶然間看到這樣的一個問題:C++ 里刪delete指針兩次會怎么樣序仙?
《原題:https://www.zhihu.com/question/38998078#answer-41205877》
問題提的很2b派歌,重點看大家的回答偿短!
大多數(shù)人認為:第二次delete的時候往史,行為未定義,什么事情都可能發(fā)生洛史。好習慣永遠是delete之后立刻賦nullptr秘豹。這樣即便意外第二次delete了,也沒關系诱咏,因為delete nullptr是有良好定義的苔可。其實我也是一直保持著這樣的代碼習慣。
這個問題隨即便延伸出了另一個問題:delete后是否需要置空袋狞?
有一些人覺得:delete 之后賦值 nullptr 絕對是壞習慣焚辅,會掩蓋真實的錯誤。也不利于使用各種 memory checker 工具找出錯誤苟鸯。
類似的還有為了防止 double free 而在 free 之后賦值 NULL法焰,一樣是錯誤的。
在 C++ 里倔毙,任何資源釋放的操作都應該在析構函數(shù)里進行,這樣只要管好對象生命期就不會有資源泄漏了乙濒。
《未完陕赃。自己再鉆研下》