我有一个简短的问题。我有以下代码:
class Class1
{
Class1();
~Class1();
void func1();
private:
char* c;
}
void Class1::func1()
{
string s = "something";
this->c = s.c_str();
}
当 func1()
完成时,c
会存储 "something"
吗?
最佳答案
没有。它将改为调用未定义的行为。(无论如何,如果你取消引用指针。)由于 s
是一个具有自动存储持续时间的 block 范围对象,它在函数返回时被销毁,并且这使得 .c_str()
返回的指针无效。
为什么不使用 std::string
成员变量呢?
关于c++ - 字符串是动态分配的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19577220/