1

如果一个向量被放置在堆栈中,它将在其自动变量范围的末尾自动销毁。

如果我在一个类中放置了一个向量怎么办?

class A
{
    vector<B> bs;  // B is POD struct.
};

我应该手动清理它吗?如果是这样,我该怎么办?

4

2 回答 2

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
}
于 2011-03-26T12:06:55.083 回答
0

确保您在向量中使用的每个 B 类在析构函数中删除其自己分配的空间,因此当向量超出范围时,您不会留下内存泄漏

于 2011-03-26T13:09:01.843 回答