tengo una variable miembro de clase como esta:cómo liberar std :: vector si no hay memoria del montón
vector<vector<int> > m_stacks;
Cuando lo pueblan, me gusta esto:
vector<int> v;
v.push_back(1);
v.push_back(2);
m_stacks.push_back(v);
vector<int> v2;
v2.push_back(1);
v2.push_back(2);
m_stacks.push_back(v2);
Ahora Me pregunto qué debería hacer en el destructor de clase para liberar m_stacks
. No le asigno ningún montón de memoria, así que estoy luchando si realmente necesito hacer algo. Finalmente se me ocurra esto -
vector<vector<int> >::iterator itr = m_stacks.begin();
for (; itr != m_stacks.end(); ++itr) {
itr->clear();
}
Creo que esto es lo más que tengo que hacer, no necesito llamar m_stacks.clear()
. La razón es que el destructor del vector puede liberar automáticamente la memoria. Pero aún necesito el código anterior, la razón es que el vector destructor no llama al destructor de su elemento.
Podría confirmar mi llamada?