因此,我将 boost::shared_ptr 用于它提供的所有各种引用计数优势——显然,对于初学者的引用计数,以及复制、分配和存储在 STL 容器中的能力。
问题是,如果我将它传递给一个“恶意”函数或对象,则该对象可以保存 ptr,然后如果没有外部函数或对象很好地放弃其所有权,我将永远无法取消分配它。
最终,我尝试保持明确的对象所有权。我通过让所有者将唯一的 shared_ptr 保留给对象来实现这一点,而“guest”对象只将 weak_ptr 存储到对象中。
我真的不想要shared_ptr 的“共享”部分,但我需要使用shared_ptr 来制作weak_ptr。我想使用 scoped_ptr,但它非常有限,因为你不能复制它。您不能将其存储在容器中,不能从中借出weak_ptrs,也不能将所有权转让给新经理。
解决方案是什么?