析构函数会被调用吗?

时间:2010-06-04 12:09:24

标签: c++ vector

如果我创建了向量向量的向量,如果我清除第一个向量,或者第一个向量被删除,所有子向量是否会调用析构函数并释放内存,否则会导致内存泄漏?感谢

4 个答案:

答案 0 :(得分:5)

如果你有:

vector <vector <vector <int> > > > v;
v.clear();

然后将为所有子向量适当调用析构函数。

答案 1 :(得分:3)

如果使用new创建包含的向量,则只会发生内存泄漏。在向量上调用clear()不会在包含的项目上调用delete

答案 2 :(得分:2)

STL仅提供价值语义。这意味着只要不将指针放入容器中,就不必担心内存分配/释放问题。从容器中删除对象时也会被破坏,因此当容器本身被破坏(或清除)时也会被破坏。

这也意味着对这些容器的许多操作将涉及(默认)构造,复制和销毁对象。

答案 3 :(得分:0)

是。将调用析构函数并释放内存。