如果我创建了向量向量的向量,如果我清除第一个向量,或者第一个向量被删除,所有子向量是否会调用析构函数并释放内存,否则会导致内存泄漏?感谢
答案 0 :(得分:5)
如果你有:
vector <vector <vector <int> > > > v;
v.clear();
然后将为所有子向量适当调用析构函数。
答案 1 :(得分:3)
如果使用new
创建包含的向量,则只会发生内存泄漏。在向量上调用clear()
不会在包含的项目上调用delete
。
答案 2 :(得分:2)
STL仅提供价值语义。这意味着只要不将指针放入容器中,就不必担心内存分配/释放问题。从容器中删除对象时也会被破坏,因此当容器本身被破坏(或清除)时也会被破坏。
这也意味着对这些容器的许多操作将涉及(默认)构造,复制和销毁对象。
答案 3 :(得分:0)
是。将调用析构函数并释放内存。