为什么我不必从 std::string 的 c_str 函数中释放字符串?
Why I don’t have to free string from c_str function of std::string?
为什么我不必从 std::string 的 c_str 函数中释放字符串?
函数如何生成const char*以及如何销毁?
来自 c_str()
的 const char*
return 由 std::string
本身管理,并在 std::string
过期时销毁。在这方面,必须小心他们不要在 std::string
被销毁后尝试使用从 c_str()
得到的指针 return:
const char* getName()
{
std::string name = "Joe";
return name.c_str();
}
上面是错误的,因为当name
被析构为getName
return时,指针会失效
为什么我不必从 std::string 的 c_str 函数中释放字符串? 函数如何生成const char*以及如何销毁?
来自 c_str()
的 const char*
return 由 std::string
本身管理,并在 std::string
过期时销毁。在这方面,必须小心他们不要在 std::string
被销毁后尝试使用从 c_str()
得到的指针 return:
const char* getName()
{
std::string name = "Joe";
return name.c_str();
}
上面是错误的,因为当name
被析构为getName
return时,指针会失效