2012-11-15 51 views
4

我有一个类如内存泄漏C++字符串

class test{ 

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

} 

在这个类的构造函数读取变量mystring.My问题文件的内容是:

是否MyString中被释放的时候,当类自毁或者我必须手动释放它?我怎样才能释放mystring?

+0

你不必释放它。你甚至可能根本不需要编写析构函数。 –

回答

7

因为mystring是对象的一部分,所以它在对象确实会超出范围。没有必要“手动”释放它,事实上你不能。

这将是不同的,如果mystring是指向与new(或new[])分配的内存,那么你就必须手动delete(或delete[])从你的析构函数。

5

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

如果你不这样做,那么一个乖巧的班级不应该要求你做另一个。 是的,标准库运行良好。

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

1

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