【发布时间】:2011-10-28 04:27:05
【问题描述】:
我有一个这样的类成员变量:
vector<vector<int> > m_stacks;
当我填充它时,我会这样做:
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);
现在我想知道我应该在类析构函数中做什么来释放m_stacks。我没有为它分配任何堆内存,所以如果我真的需要做任何事情,我会很挣扎。最后我想出了这个-
vector<vector<int> >::iterator itr = m_stacks.begin();
for ( ; itr != m_stacks.end(); ++itr) {
itr->clear();
}
我认为这是我最需要做的,我不需要打电话给m_stacks.clear()。原因是vector的析构函数可以自动释放内存。但是我仍然需要上面的代码,原因是vector的析构函数没有调用它的元素的析构函数。
你能确认我的电话吗?
【问题讨论】:
标签: c++ memory-management vector