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

标签 c++ memory-management vector

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

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 的析构函数没有调用它的元素的析构函数。

你能确认我的通话吗?

最佳答案

您不必为 m_stacks( 数据成员)做任何事情。当 class 析构函数被调用时,获取的内存将自动释放。这就是使用 std::vector 的目的。

关于c++ - 如果没有堆内存,如何释放 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7925151/

相关文章:

c# - 如何在对象上进行交易

c++ - GCC c++11 使用大量带有 STL 位集 <UINT_MAX> 的 RAM

c++ - 什么是段错误?我该如何解决?

linux - 了解Linux中的进程内存映射

C++ : efficient copy of a list of vectors in a vector

c++ - 使用 EIGEN 库填充动态 vector

c++ - 复制构造函数后链表中的访问冲突

c++ - 链接错误 - Qt 和 VS2013 上的 Oculus Rift Libs (Linux - Windows)

c++ - 在没有新运算符的情况下 segmentation 四叉树

C++:如何访问另一个类中的类函数?