为什么我不需要从std :: string的c_str函数中释放字符串?
该函数如何生成const char *并如何销毁它?
c_str()
返回的 const char*
由 std::string
自己管理,当 std::string
超出生命周期时将被销毁。因此,我们必须小心,确保在 std::string
销毁后不要再使用从 c_str()
返回的指针:
const char* getName()
{
std::string name = "Joe";
return name.c_str();
}
std::string
可以在内存中是非连续的(C++11将其更改为要求连续)。如果它是一个C++11之前的非连续字符串,那么c_str()
数据会是什么样子呢? - undefinedc_str
返回的数据,并在析构函数中释放它。 - undefined
c_str
返回的原始指针。 - undefinednew
来解决)。 - undefinedc_str()
返回的是一个原始指针。请参考已发布的答案,其中包含了一个确切回答该问题的示例。 - undefined