【发布时间】:2013-06-19 04:20:12
【问题描述】:
我有以下二维向量:
std::vector<std::vector<int>> m_scoreVector;
我尝试使用以下代码来释放分配的内存。但是,它不起作用。只会释放一小部分内存:
for (int k = 0; k < m_scoreVector.size(); ++k){
std::vector<int>().swap(m_scoreVector[k]);
m_scoreVector[k].shrink_to_fit();
m_scoreVector[k].clear();
}
std::vector<std::vector<int>>().swap(m_scoreVector);
m_scoreVector.shrink_to_fit();
m_scoreVector.clear();
我是内存管理的新手。请让我知道我应该如何释放为此向量分配的内存。 谢谢。
【问题讨论】:
-
它已为您释放。真的就这么简单。
-
不是!每次运行时,该向量都会获得 2000 KB,但它只释放 200 KB!
-
您如何确定正在使用多少内存?
-
@Bipario 尝试运行您怀疑可能存在内存泄漏的代码 10,000、100,000 或 1,000,000 次。然后如果有内存泄漏,你就会知道,因为它会加起来那么多。
-
@Bipario,查找 RAII。这就是我们滚动的方式。