我有一個C++類爲字符串,像一員:C++字符串重新分配,舊字符串是否正確釋放?
class Phone {
string name;
void foo()
{
name = string("new_name");
}
}
現在,「foo」函數中,我重新分配字符串「NEW_NAME」。我的問題是:
- 舊的空串會發生什麼?它是否正確「釋放」?它仍然佔用內存嗎?
- 現在我初始化Phone的構造函數中的字符串string(「old_name」)。這與之前的空字符串是否一樣?舊字符串「old_name」在這裏會發生什麼?
非常感謝......這意味着,當我正確理解它時,您真的只需要關心用「新」創建的內容以避免內存泄漏? (除了mallocs,當然..) – 2010-08-30 15:04:44
@JanRüegg:Sort。但是你總是可以圍繞這些問題進行設計。閱讀RAII。請參閱http://www2.research.att.com/~bs/bs_faq2.html#finally – dirkgently 2010-08-30 15:07:30
@Jan - 正確設計的類(例如,可能使用RAII)將極大地幫助您編寫不會泄漏內存的代碼。請參閱http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization – 2010-08-30 15:20:17