Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Pedro122h en 10 Marzo 2022, 06:43 am



Título: Duda sobre nodos y uso de memoria
Publicado por: Pedro122h en 10 Marzo 2022, 06:43 am
por ejemplo en esta funcion creo un nodo auxiliar para mostrar los nodos
Código
  1. void mostrarnodos(nodo *lista){
  2. nodo *actual=new nodo();
  3. actual=lista;
  4. while(actual!=NULL){
  5. cout<<"dato: "<<actual->dato<<endl;
  6. actual=actual->siguiente;
  7. }
  8. }
Cada vez que llame la funcion me esta ocupando mas memoria?
o simplemente el nodo se borra cuando se termina la ejecucion de la funcion?
Es algo que no tengo claro y me gustaria saber.

O en este otro caso con esta otra funcion
Código
  1. void eliminarnodo(nodo *&lista){
  2. pila=pila->siguiente;
  3. }
En realidad hacer esto libera ese espacio de memoria? O simplemente se deja de tener acceso a el


Título: Re: Duda sobre nodos y uso de memoria
Publicado por: Eternal Idol en 10 Marzo 2022, 09:55 am
Si, new reserva memoria  y para liberarla debes usar delete, ahi tenes un memory leak.


Título: Re: Duda sobre nodos y uso de memoria
Publicado por: MAFUS en 10 Marzo 2022, 18:53 pm
Esta línea te sobra
Código:
nodo *actual=new nodo();
porque le estás pidiendo al sistema memoria para un nodo que no usas. A la siguiente línea le cambias la referencia con
Código:
actual=lista;
y ya has perdido ese 'new nodo()'. Igual en 'eliminarnodo' debes hacer un delete, no basta con cambiar de referencia la pila.


Título: Re: Duda sobre nodos y uso de memoria
Publicado por: Pedro122h en 10 Marzo 2022, 23:55 pm
Gracias por la Ayuda