ban*_*ong 3 c++ memory-management vector
我有一个包含vector成员变量的类.我知道当它们超出范围时,存储在堆栈中的向量将被清除(即内存空闲),但我不确定类对象的破坏 - 包含向量成员变量 - 是否被认为是超出范围.
如果不是,那么破坏向量的适当方法是什么?
例如:
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?
}
}
Run Code Online (Sandbox Code Playgroud)
矢量已经为你清理了!当一个类被破坏时,它的所有成员析构函数也被调用.在这种情况下,v调用析构函数,它会清除它分配的内容.
当你}按照它们被声明的相反顺序到达析构函数的结束时,将调用非静态成员的dtors .然后调用你的基类析构函数(如果存在).