Безопасно ли разыменовать временный std:: shared ptr?

безопасно ли разыменовать временный 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 уничтожается, и счетчик ссылок переходит к нулю, как только разыменование завершено, и, таким образом, возвращенный необработанный указатель больше не безопасен.

1 ответов


каково время жизни временного объекта C++

в этом случае, возвращенный std::shared_ptr не будет уничтожен до std::cout << std::endl; закончено, поэтому вы можете разыменовать его безопасно.