内存泄漏C ++字符串

时间:2012-11-15 08:46:00

标签: c++ string

我有一个班级,例如

class test{

   public:
      somedatahere
      test();
     ~test();
   private:
       string mystring;

}

在这个类中,构造函数在变量mystring中读取文件的内容。我的问题是:

当类破坏时,mystring是否被释放,或者我必须手动释放它?我怎样才能释放mystring?

3 个答案:

答案 0 :(得分:7)

由于mystring是对象的一部分,因此当对象执行时它将超出范围。没有必要“手动”释放它,事实上你不能。

如果mystring是指向分配了new(或new[])的内存的指针,则会有所不同,那么您必须手动delete(或{{ 1}})来自你的析构函数。

答案 1 :(得分:5)

你只需要释放你分配的东西。 new应与delete匹配,new[]delete[]匹配。

如果你不这样做,那么一个表现良好的课程不应该要求你做另一个。 是的,标准库表现良好。

所以不,你不需要做任何事情。让std::string实例自行清理。 (当然,按照它的例子,并确保你自己的类做同样的事情)

答案 2 :(得分:1)

假设你的构造函数只是直接分配到mystring而没有任何其他分配或做一些奇怪的事情,那么它将被析构函数正确释放。