9

取消引用临时 std::shared_ptr 是否安全?

例子:

std::shared_ptr<std::string> create_shared_string()
{
  return std::shared_ptr<std::string>(new std::string("hello"));
}

std::cout << *create_shared_str() << std::endl;

我担心 shared_ptr 被破坏,并且一旦取消引用完成,引用计数器就会变为零,因此返回的原始指针不再安全。

4

1 回答 1

7

C++ 临时对象的生命周期是多少

在这种情况下,返回的值在完成std::shared_ptr之前不会被破坏std::cout << std::endl;,因此您可以安全地取消引用它。

于 2013-05-26T19:46:13.573 回答