繁体   English   中英

shared_ptr对象全局删除

[英]shared_ptr object global deletion

我想使用像std库的shared_ptr这样的智能指针,但是可以在不删除那些指针的情况下为共享该对象的每个shared_ptr删除该对象。

例如,如果我使用std :: shared_ptr

shared_ptr<A> p1 = make_share<A>();
shared_ptr<A> p2 = shared_ptr<A>(p1);
p1.reset();
// now p2 still contain the object of type A
// instead of nullptr

有没有办法做到这一点,或者有其他选择吗? 我做错了吗?

绝对。 std::shared_ptr附带了std::weak_ptr ,该指针可以指向由一组std::shared_ptr托管的对象,并检查其是否仍处于活动状态,但不会延长该对象的寿命。

您只需要将原始std::shared_ptr保留在您的对象中,然后将std::weak_ptr借给该对象的其他用户即可。 当必须销毁对象时,请重置std::shared_ptr ,然后所有剩余的std::weak_ptr都可以知道(当用户尝试锁定它们时,它们将返回null std::shared_ptr )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM