Tengo una pregunta ya que he estado cursando hasta hace poco la asignatura de Programación y Estructura de datos, y en las prácticas hemos trabajado con memoria dinámica.
Mi pregunta es la siguiente...
En el tipo Lista de datos creado, tengo una clase Nodo que contiene un numero(int), normal y corriente, y un puntero a otro nodo llamado siguiente.
Código
class Nodo{ friend class Lista; private: int n; Nodo* siguiente; ... }
Y una lista que contiene un puntero a Nodo que apunta a la cabeza.
Código
class Lista{ friend class Nodo; private: Nodo *primero; ... }
Mi pregunta se genera al tratar de insertar en dicha lista ya que en el método insertar, lo que hago es crear un nodo mediante new, tal que...
Código
bool Lista::Insertar(const int &n){ Nodo *nodoaux = new Nodo; nodoaux->n = n; this->primero=nodoaux; return true; }
Pero gracias a Valgrind, me he dado cuenta que todo esa memoria dinamica que estoy creando no la puedo borrar, ya que si hago el delete nodoaux; nodoaux=NULL; antes de el return, me aparece basura al salir del metodo y regresar al programa principal.
Entiendo que es porque estoy borrando un puntero que he creado con los datos.
¿Habría alguna forma de salir del método, aun creando dentro de el un puntero a Nodo, igualando el principio de mi lista a ese puntero y gestionar bien la memoria?
(Solo pongo el código para insertar al principio de la lista, los demás casos los he contemplado en mi práctica también pero con una gestión de memoria malisima )
Espero respuesta!
Muchas gracias