【发布时间】:2021-01-29 22:51:06
【问题描述】:
- 在下面的代码中,我的理解是 a 和 b 不共享所有权。相反,它们是两个独立的智能指针,每个都有单独的控制块,ref_count = 1。 我的理解正确吗?
std::shared_ptr<Foo> a = make_shared<Foo>();
std::shared_ptr<Foo> b = make_shared<Foo>();
- 使用shared_ptr 共享所有权并增加ref_cnt 的正确方法是调用make_shared 一次初始化内存并使用copy/assign 增加ref_cnt 并共享所有权。例如:
std::shared_ptr<Foo> a = make_shared<Foo>();
auto b = a;
auto b(a);
我上面提到的两点对吗?
提前谢谢你!
【问题讨论】:
-
是的,你的理解是正确的。
标签: c++ shared-ptr smart-pointers