gpt4 book ai didi

C++ 字符串重新分配,旧字符串是否正确释放?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:42 25 4
gpt4 key购买 nike

我有一个 C++ 类,它的成员是一个字符串,类似于:

class Phone {
string name;

void foo()
{
name = string("new_name");
}
}

现在,在函数“foo”中,我将字符串重新分配给“new_name”。我的问题是:

  • 旧的空字符串会怎样?它是否正确“释放”?它还占用内存吗?
  • 现在我将 Phone 的构造函数中的字符串初始化为 string("old_name")。这和之前的空字符串是一样的吗?旧字符串“old_name”在这里发生了什么?

最佳答案

是的,std::string 为您管理内存。 (这是它存在的原因之一!)它是如何做到的是一个实现细节(例如,它可能使用写时复制、引用计数或深度复制语义),但在大多数情况下,std::string 将始终正确释放不再需要的内存。

当然,这是假设赋值运算符的实现或 std::string 的析构函数没有错误(对于所有实现非默认赋值的类都是如此运算符/析构函数)。

关于C++ 字符串重新分配,旧字符串是否正确释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3601493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com