据我了解,std::weak_ptr
用作引用可能已被解除分配的std::shared_ptr
引用的内存的安全方式。是否可以与std::unique_ptr
一起使用?
答案 0 :(得分:5)
据我了解,std :: weak_ptr用作引用shared_ptrs引用的内存的安全方法,可能已经解除分配。
你理解错了。 std::weak_ptr
允许访问对象,所有权由std::shared_ptr
维护而不共享。现在当你真正理解std::weak_ptr
时你应该理解你关于std::unique_ptr
的问题没有任何意义。
答案 1 :(得分:2)
有一个等效指针充当std::unique_ptr
的观察者,但不会像std::weak_ptr
那样提供安全性。
该指针是原始指针。如果它们不比独特的所有者寿命长,它们是安全的。
如果您需要知道原始指针所有者的生命周期是否结束,那么不,那就没有办法,而且这不是std::unique_ptr
的目标。
答案 2 :(得分:1)
不。
很遗憾,您必须使用std::shared_ptr
,并记录std::weak_ptr
只应暂时锁定。
答案 3 :(得分:0)
没有
weak_ptr
可用的唯一构造函数是shared_ptr
或另一个weak_ptr
。