美文网首页
shared_ptr和weak_ptr

shared_ptr和weak_ptr

作者: 7bfedbe4863a | 来源:发表于2018-04-14 22:16 被阅读0次
    • shared_ptr 控制对象的生命期。shared_ptr 是强引用 (想象成用铁丝绑住堆上的对象),只要有一个指向 x 对象的 shared_ptr 存在,该 x 对象就不会析构。 当指向对象 x 的最后一个 shared_ptr 析构或 reset 的时候, x 保证会被销毁。
    • weak_ptr 不控制对象的生命期,但是它知道对象是否还活着(想象成用棉线轻轻拴住堆上的对象) 。如果对象还活着,那么它可以提升(promote) 为有效的 shared_ptr; 如果对象已经死了,提升会失败,返回一个空的 shared_ptr。“ 提升”行为是线程安全的。
    • 意外延长对象的生命期。 shared_ptr 是强引用 ,只要有一个指向 x 对象的 shared_ptr 存在,该对象就不会析构。而 shared_ptr 又是允许拷贝构造和赋值的(否则引用计数就无意义了) ,如果不小心遗留了一个拷贝,那么对象就永远无法析构了。

    相关文章

      网友评论

          本文标题:shared_ptr和weak_ptr

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