我有一个包含向量成员变量的类。 我知道存储在堆栈上的向量在 范围内时会被清除(即释放内存) ,但我不确定是否销毁了包含向量成员变量的 类对象 - 被视为超出范围。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