std::string 的构造函数 __CLR_OR_THIS_CALL basic_string(const _Elem *_Ptr)
会开辟新的内存空间,将_Ptr拷贝到新的空间里,因而下面的写法是错误
char* GetValue()
{
string s("Hello");
return s.c_str();
}
int main()
{
cout << GetValue()<<endl;
return 0;
}
s.c_str() 指向的不再是全局的内存空间,而是栈的空间,在函数返回时已经释放了
本文探讨了C++中std::string构造函数的工作原理,特别是通过实例解释了使用basic_string(const Elem* Ptr)构造函数时,如何进行内存分配与管理。文章指出直接返回s.c_str()的潜在风险,并强调了正确管理字符串生命周期的重要性。

被折叠的 条评论
为什么被折叠?



