c++中使用new为string分配内存的方式



我只是想知道c++中字符串对象的内存处理是如何完成的。

我有下面的代码:

#include <iostream>
using namespace std;
int main() {
// your code goes here
string str = new char[30];
str = new char[60];

delete[] str;
return 0;
}

这段代码肯定会抛出一个错误,但是有人能详细解释一下为什么这是一个错误吗?上面的声明会给str分配总共90个字节吗?

Thanks in advance

std::string在内部分配内存。这就是重点,它为你处理内存。如果你想分配一个30个字符的字符串你可以这样做

string str(30, ' ');

创建一个包含30个空格的字符串。当不再使用该字符串时,分配的内存将自动回收。

代码中使用的字符串构造函数实际上是用来从C字符串创建c++字符串的。例如

string str("hello");

这将创建一个长度为5的字符串并初始化为'hello'。同样,当不再使用该字符串时,分配的所有内存将自动回收。

这是std::string类的要点,使事情变得简单。显然比你想象的要容易。

最新更新