自行分配 a 是否安全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
对象:
- 将减少左侧(LHS)操作数引用计数(RC),然后检查它是否为0(这些先前的操作是原子完成的),如果是则释放资源;
- 此外,将增加右侧(RHS)RC。
所以在这个例子中,对象在 LHS 和 RHS 上都是相同的,并且赋值运算符中这两个 RC 变化的顺序是未指定的。
我真的不知道在自我分配的情况下会发生什么。