1

我有以下二维向量:

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

我是内存管理的新手。请让我知道我应该如何释放为此向量分配的内存。谢谢。

4

2 回答 2

0

向量为您管理内存。当它们超出范围时,它们将释放内存。一般来说,如果你不使用 new 或 malloc 分配内存,你也不必担心释放它。

于 2013-06-19T04:48:26.343 回答
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();
于 2018-09-24T03:18:55.867 回答