关于delete后是否需要置空

偶然间看到这样的一个问题: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++ 里,任何资源释放的操作都应该在析构函数里进行,这样只要管好对象生命期就不会有资源泄漏了。

《未完。自己再钻研下》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容