正在将shared_ptr自身安全吗?

问题描述 投票:2回答:2

自定义std::shared_ptr是否安全?所以这是一个例子:

std::shared_ptr<std::vector<std::string>> pVec = std::make_shared<std::vector<std::string>>();

std::cout << pVec.use_count() << std::endl; // 1
pVec = pVec;

我知道分配一个shared_ptr对象:

  • 将减少左侧操作数引用计数(RC),然后检查其是否为0(这些先前的操作是原子完成的,如果是,则释放资源;
  • 也将增加右侧(RHS)RC。

因此,在此示例中,LHS和RHS上的对象都是相同的,并且未指定赋值运算符中这两个RC更改的顺序。

我真的不知道在自我分配的情况下到底会发生什么。

c++ shared-ptr reference-counting copy-assignment
2个回答
2
投票

0
投票

允许进行自我分配,可以安全地谈论内存泄漏。实际上,没有任何文档和使用valgrind进行的测试表明共享指针的自我分配会导致内存泄漏。

© www.soinside.com 2019 - 2024. All rights reserved.