释放分配给二维向量的内存

时间:2013-06-19 04:20:12

标签: c++ memory vector

我有以下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();

我是内存管理的新手。请告诉我如何释放此向量的已分配内存。 感谢。

2 个答案:

答案 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();