如果一个向量被放置在堆栈中,它将在其自动变量范围的末尾自动销毁。
如果我在一个类中放置了一个向量怎么办?
class A
{
vector<B> bs; // B is POD struct.
};
我应该手动清理它吗?如果是这样,我该怎么办?
如果一个向量被放置在堆栈中,它将在其自动变量范围的末尾自动销毁。
如果我在一个类中放置了一个向量怎么办?
class A
{
vector<B> bs; // B is POD struct.
};
我应该手动清理它吗?如果是这样,我该怎么办?
当调用封闭类的析构函数(即 的析构函数)时,该向量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
}
确保您在向量中使用的每个 B 类在析构函数中删除其自己分配的空间,因此当向量超出范围时,您不会留下内存泄漏