我想将构造的shared_ptr分配给weak_ptr:
std::weak_ptr<void> rw = std::shared_ptr<void>(operator new(60), [](void *pi) { operator delete(pi); });
但是,当我这样做时rw.expired()
,显示过期则为空。有什么建议我哪里出错了吗?
提前致谢。
目的std::shared_ptr
是当指向它的最后一个共享指针被销毁或重新分配到其他地方时释放托管对象。您创建了一个临时共享 ptr,并将其分配给std::weak_ptr
然后它就在表达式末尾被销毁。你需要让它保持活力:
auto shared = std::shared_ptr<void>(operator new(60), [](void *pi) { operator delete(pi); });
std::weak_ptr<void> rw = shared;
now rw
至少不会过期shared
还活着。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)