美文网首页
关于delete后是否需要置空

关于delete后是否需要置空

作者: gzr | 来源:发表于2016-08-02 00:01 被阅读0次

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

    《未完。自己再钻研下》

    相关文章

      网友评论

          本文标题:关于delete后是否需要置空

          本文链接:https://www.haomeiwen.com/subject/jjrfsttx.html