Tengo un vector que relleno con punteros a los objetos. Estoy tratando de aprender una buena administración de memoria, y tengo algunas preguntas generales:¿Qué debo hacer antes de eliminar elementos en un vector de punteros a objetos asignados dinámicamente?
- ¿Es verdad que cuando termine con el vector, debo recorrerlo y llamar eliminar en cada puntero?
- ¿Por qué no tengo que llamar eliminar en el vector o cualquier otra variable que declaro sin la nueva instrucción, pero se debe invocar a borrar en los punteros?
- ¿Maneja C++ liberando la memoria de los punteros si el vector se declara en una función que retorna (haciendo que el vector salga del alcance)?
3: C++ liberará, por supuesto, la memoria utilizada por los punteros, ya que están asignados en la pila. Pero los objetos apuntados por esos punteros probablemente se asignen en el montón y, por lo tanto, deberán borrarse. Y, por supuesto, los punteros en el vector podrían apuntar a la pila de objetos asignados, que no se pueden eliminar. En general, nunca debe almacenar punteros no const para apilar objetos asignados en un vector. – smerlin
Gracias! Eso fue muy claro! –