liberar memoria(Resuelto)

Iniciado por Beginner Web, 6 Diciembre 2018, 18:51 PM

0 Miembros y 1 Visitante están viendo este tema.

Beginner Web

Resuleto!
Código (cpp) [Seleccionar]
//Definicion de la estructura lista
typedef struct tnodo *pnodo;
typedef struct tnodo{
char dato;
pnodo sig;
};
typedef struct tlista{
pnodo inicio;
pnodo final;
};

void liberar_memoria(tlista &lista)
{
pnodo eliminado;
while(lista.inicio!=NULL){
eliminado=lista.inicio;
lista.inicio=eliminado->sig;
eliminado->sig=NULL;
delete(eliminado);
}
}

;-)
7w7

CalgaryCorpus

Depende de lo que entiendas por "liberar".
Nada impide que los punteros apuntes a direcciones de memoria asignadas o no. El que tengas un puntero a zona de memoria liberada no la hace estar asignada, solo se convierte en un peligro para la ejecucion de tu programa el que alguna instruccion posterior, haciendo uso de ese puntero no actualizado quiera ir a esa direccion de memoria y leer o escribir alli.

En resumen:
Si "liberar" incluye mantener el estado de la lista, entonces es necesario la asignacion del puntero final. Si "liberar" solo se preocupa de memoria utilizada, no es necesario.
Aqui mi perfil en LinkedIn, invitame un cafe aqui