我试图为这个问题写一个标题大约 10 分钟,你会看到我最终失败了。[编者注:我想我已经解决了这个问题。]
我正在阅读Herb Sutter 的博客,主题是使用 std::make_shared 及其优缺点。请看附上的照片:
这是一篇非常有趣的文章的一小部分,我强烈建议人们阅读。我的问题是关于这句话:
一个“弱引用”计数,用于跟踪当前观察对象的weak_ptrs 数量。当最后一个弱引用消失时,共享内务控制块被销毁和释放(如果共享对象尚未释放,则共享对象被释放)。**
我真的不明白这个说法。std::shared_ptr
最初,当我们通过make_shared
eg创建 a 时,当前没有观察 sp1 的弱 ptrs,因此当以通常的方式超出范围auto sp1 = make_shared<widget>();
时,它将被删除。shared_ptr
那么添加弱引用如何改变这种行为呢?谁能给我解释一下?