我有一個類如內存泄漏C++字符串
class test{
public:
somedatahere
test();
~test();
private:
string mystring;
}
在這個類的構造函數讀取變量mystring.My問題文件的內容是:
是否MyString中被釋放的時候,當類自毀或者我必須手動釋放它?我怎樣才能釋放mystring?
我有一個類如內存泄漏C++字符串
class test{
public:
somedatahere
test();
~test();
private:
string mystring;
}
在這個類的構造函數讀取變量mystring.My問題文件的內容是:
是否MyString中被釋放的時候,當類自毀或者我必須手動釋放它?我怎樣才能釋放mystring?
因爲mystring
是對象的一部分,所以它在對象確實會超出範圍。沒有必要「手動」釋放它,事實上你不能。
這將是不同的,如果mystring
是指向與new
(或new[]
)分配的內存,那麼你就必須手動delete
(或delete[]
)從你的析構函數。
你只需要釋放你分配的東西。 new
應匹配delete
和new[]
匹配delete[]
。
如果你不這樣做,那麼一個乖巧的班級不應該要求你做另一個。 是的,標準庫運行良好。
所以不,你不需要做任何事情。讓std::string
實例自行清理。 (當然,按照它的例子,並確保你自己的類也是這樣做的)
假設你的構造函數只是直接分配給mystring
而沒有任何其他分配或做一些奇怪的事情,那麼是的,它會被析構函數正確地釋放。
你不必釋放它。你甚至可能根本不需要編寫析構函數。 –