我有以下2维向量:
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();
我是内存管理的新手。请告诉我如何释放此向量的已分配内存。 感谢。
答案 0 :(得分:0)
向量为您管理内存。当它们超出范围时,它们将释放内存。一般来说,如果你没有使用new或malloc分配内存,你也不必担心释放内存。
答案 1 :(得分:0)
swap()和shrink_to_fit()是释放向量内存的两种方法,不能一起使用
尝试此代码:
for (int k = 0; k < m_scoreVector.size(); ++k){
m_scoreVector[k].clear();
m_scoreVector[k].shrink_to_fit();
}
m_scoreVector.clear();
m_scoreVector.shrink_to_fit();