c++ - 字符串是动态分配的吗?

标签 c++ string

我有一个简短的问题。我有以下代码:

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/

相关文章:

c# - 将数字转换为 .NET 中的十六进制值

c++ - DirectX 顶点缓冲区默认与默认 + 暂存

java - 你能拉开一根绳子吗?

c++ - (如何)我可以在 C++ 中使用字符串数组作为标识符?

java - 在多维数组中设置字符串

c - C 程序中的奇怪行为,分配内存后变量损坏

c++ - 如何在 C++ 中计算文件的 sha1sum?

c++ - MS Access 中 NZ 函数的 ADO 等价物?

c++ - 为什么我的 Q_INVOKABLE 方法返回的自定义 QObject 在我的 QML 中未定义?

java - 在 JNI 中从 C++ 代码创建 New<PrimitiveType>Array 时如何释放 <PrimitiveType>Array 的缓冲区?