2013-06-19 4 views
0

У меня есть следующие два размерный вектор:Освобождение памяти, выделенной для 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

Это освобождено для вас. Это действительно так просто. – chris

+0

Это не так! При каждом запуске этот вектор получает 2000 КБ, но он освобождает только 200 КБ! – Bipario

+1

Как вы определяете, сколько памяти используется? –

ответ

0

Векторы управляют памятью для вас. Они освободят память, когда они выйдут из сферы действия. В общем случае, если вы не выделяете память с помощью new или malloc, вам также не нужно беспокоиться о ее освобождении.

Смежные вопросы