Безопасно ли разыменовать временный 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;
закончено, поэтому вы можете разыменовать его безопасно.