相关疑难解决方法(0)

如果没有堆内存,如何释放std :: vector

我有一个这样的类成员变量:

vector<vector<int> >  m_stacks;
Run Code Online (Sandbox Code Playgroud)

当我填充它时,我喜欢这样:

vector<int> v;
v.push_back(1);
v.push_back(2);
m_stacks.push_back(v);
vector<int> v2;
v2.push_back(1);
v2.push_back(2);
m_stacks.push_back(v2);
Run Code Online (Sandbox Code Playgroud)

现在我想知道我应该在类析构函数中做什么来释放m_stacks.我没有为它分配任何堆内存,所以如果我真的需要做任何事情我就会挣扎.最后我来了 -

vector<vector<int> >::iterator itr = m_stacks.begin();
for ( ; itr != m_stacks.end(); ++itr) {
  itr->clear();
}
Run Code Online (Sandbox Code Playgroud)

我认为这是我最需要做的,我不需要打电话m_stacks.clear().原因是vector的析构函数可以自动释放内存.但是我仍然需要上面的代码,原因是vector的析构函数不调用它的元素的析构函数.

你能确认我的电话吗?

c++ memory-management vector

6
推荐指数
3
解决办法
3486
查看次数

标签 统计

c++ ×1

memory-management ×1

vector ×1