weak_ptr 是否与 unique_ptr 一起工作?
Does weak_ptr work alongside unique_ptr?
据我了解,std::weak_ptr
用作引用可能已被释放的 std::shared_ptr
引用的内存的安全方法。它也可以与 std::unique_ptr
一起使用吗?
没有。
不幸的是,您将不得不使用 std::shared_ptr
,并记录 std::weak_ptr
应该只是暂时锁定。
没有
weak_ptr
唯一可用的构造函数是接受 shared_ptr
或另一个 weak_ptr
的构造函数。
As I understand it std::weak_ptr is used as a safe way of referencing memory referenced by shared_ptrs which may have been deallocated.
你理解错了。 std::weak_ptr
允许访问对象,其所有权由 std::shared_ptr
维护而无需共享。现在当你真正明白std::weak_ptr
是什么的时候你应该明白你关于std::unique_ptr
的问题没有任何意义。
有一个等效的指针充当 std::unique_ptr
的观察者,但不会以与 std::weak_ptr
相同的方式提供安全性。
那个指针是原始指针。如果它们的寿命不超过唯一所有者,则可以安全使用。
如果你需要知道原始指针的所有者的生命周期是否结束,那么不,没有办法,这不是 std::unique_ptr
的目标。
据我了解,std::weak_ptr
用作引用可能已被释放的 std::shared_ptr
引用的内存的安全方法。它也可以与 std::unique_ptr
一起使用吗?
没有。
不幸的是,您将不得不使用 std::shared_ptr
,并记录 std::weak_ptr
应该只是暂时锁定。
没有
weak_ptr
唯一可用的构造函数是接受 shared_ptr
或另一个 weak_ptr
的构造函数。
As I understand it std::weak_ptr is used as a safe way of referencing memory referenced by shared_ptrs which may have been deallocated.
你理解错了。 std::weak_ptr
允许访问对象,其所有权由 std::shared_ptr
维护而无需共享。现在当你真正明白std::weak_ptr
是什么的时候你应该明白你关于std::unique_ptr
的问题没有任何意义。
有一个等效的指针充当 std::unique_ptr
的观察者,但不会以与 std::weak_ptr
相同的方式提供安全性。
那个指针是原始指针。如果它们的寿命不超过唯一所有者,则可以安全使用。
如果你需要知道原始指针的所有者的生命周期是否结束,那么不,没有办法,这不是 std::unique_ptr
的目标。