我有一個包含向量成員變量的類。 我知道存儲在堆棧上的向量在 範圍內時會被清除(即釋放內存) ,但我不確定是否銷燬了包含向量成員變量的 類對象 - 被視爲超出範圍。C++刪除析構函數中的向量類成員內存
如果不是,有什麼適當的方法來破壞 的載體?
EG:
class fred {
char *stuff;
vector<int> v;
fred() : stuff(), v() {}
~fred() {
if (stuff) free(stuff);
// now how do I clear up the vector v? Will it be done automatically?
}
}
看到它是如何標記C++的,你可能希望'new/delete'在'malloc/free'上。 – chris
矢量是好的。但'stuff'由於複製構造函數和賦值操作符而不安全(因爲編譯器會自動生成它們)。查看三條規則(或C++ 11中的五條規則)。 –
在新的世界中,C++ 11-land,你不再自己調用delete。您可以使用unique_ptrs(通常)或shared_ptrs(很少)來爲您調用它。 – David