解除引用临时std :: shared_ptr是否安全?

mon*_*res 9 c++ memory-management stl visual-c++

解除引用临时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;
Run Code Online (Sandbox Code Playgroud)

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

yng*_*ccc 7

什么是C++临时对象的生命周期

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