2012-11-15 57 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而沒有任何其他分配或做一些奇怪的事情,那麼是的,它會被析構函數正確地釋放。