管理单个字符串的内存

时间:2014-09-06 18:19:48

标签: c++ string

要接受一个字符串(包括空格)并将其写入文件,我使用:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
    ofstream myFile("readme.txt");

    string a;
    getline(cin, a);
    myFile << a;

    myFile.close();
}

但是我应该管理分配给字符串的内存,如果是,那么最简单的方法是什么?

4 个答案:

答案 0 :(得分:4)

不,std::string管理自己的记忆。

答案 1 :(得分:1)

不,你不需要。与C(其中字符串是指向必须管理的数组的指针)不同,std :: string类是一个管理自己内存的对象。当变量a在程序结束时超出范围时,正确释放a的内存。

答案 2 :(得分:0)

正如其他人所说,std::string(每个其他STL容器就此而言)管理自己的内存,当它超出范围时将被释放。如果你想要更多地控制它何时超出范围,你可以这样做:

int main()
{
    ofstream myFile("readme.txt");

    {
    string a;
    getline(cin, a);
    myFile << a;
    } // <-- string is freed here

    // do other things...
}

答案 3 :(得分:0)

在C ++中,提供的字符串模板类是std::basic_string<char>的typedef,它动态地管理内存。所以你不应该。但是,您仍然可以选择在此任务中帮助此课程。 String为此提供了适当的接口for example

void reserve( size_type new_cap = 0 );
  

通知std :: basic_string对象计划的大小变化,所以   它可以适当地管理存储分配。