- 在下面的代码中,我的理解是 a 和 b 不共享所有权。相反,它们是两个独立的智能指针,每个都有单独的控制 block ,ref_count = 1。 我的理解正确吗?
std::shared_ptr<Foo> a = make_shared<Foo>();
std::shared_ptr<Foo> b = make_shared<Foo>();
- 使用共享所有权和增加 ref_cnt 的 shared_ptr 的正确方法是调用一次 make_shared 来初始化内存并使用复制/分配来增加 ref_cnt 和共享所有权。例如:
std::shared_ptr<Foo> a = make_shared<Foo>();
auto b = a;
auto b(a);
我上面说的两点对吗?
提前致谢!
最佳答案
您在所有方面都是正确的。让多个 shared_ptr
对象链拥有同一个对象不是一个好主意。
关于C++:对同一对象的两个单独的 `make_shared` 调用将创建两个单独且独立的 shared_ptr 及其控制 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65962777/