如果向量放置在堆栈中,它将在其自动变量范围的末尾自动销毁。
如果我在某个类中放置了一个矢量怎么办?
class A
{
vector<B> bs; // B is POD struct.
};
我应该手动清理吗?如果是这样,我该怎么办?
答案 0 :(得分:4)
当封闭类的析构函数(即bs
的析构函数)被调用时,将导致该向量A
被破坏。
void f()
{
{
A a;
//working with a;
}//<--- here a goes out of scope, so it's destructor is called;
//so not only a is destructed but also a.bs
}
答案 1 :(得分:0)
确保在向量中使用的每个B类在析构函数中删除自己分配的空间,因此当向量超出范围时,不会留下内存泄漏