关于delete后是否需要置空

2016-08-02  本文已影响0人  gzr

偶然间看到这样的一个问题:C++ 里删delete指针两次会怎么样?
《原题:https://www.zhihu.com/question/38998078#answer-41205877
问题提的很2b,重点看大家的回答!

大多数人认为:第二次delete的时候,行为未定义,什么事情都可能发生。好习惯永远是delete之后立刻赋nullptr。这样即便意外第二次delete了,也没关系,因为delete nullptr是有良好定义的。其实我也是一直保持着这样的代码习惯。

这个问题随即便延伸出了另一个问题:delete后是否需要置空?

有一些人觉得:delete 之后赋值 nullptr 绝对是坏习惯,会掩盖真实的错误。也不利于使用各种 memory checker 工具找出错误。
类似的还有为了防止 double free 而在 free 之后赋值 NULL,一样是错误的。
在 C++ 里,任何资源释放的操作都应该在析构函数里进行,这样只要管好对象生命期就不会有资源泄漏了。

《未完。自己再钻研下》

上一篇 下一篇

猜你喜欢

热点阅读