gpt4 book ai didi

C++:对同一对象的两个单独的 `make_shared` 调用将创建两个单独且独立的 shared_ptr 及其控制 block ?

转载 作者:行者123 更新时间:2023-12-04 01:07:26 24 4
gpt4 key购买 nike

  1. 在下面的代码中,我的理解是 a 和 b 不共享所有权。相反,它们是两个独立的智能指针,每个都有单独的控制 block ,ref_count = 1。我的理解正确吗?
std::shared_ptr<Foo> a = make_shared<Foo>();
std::shared_ptr<Foo> b = make_shared<Foo>();
  1. 使用共享所有权和增加 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com