PDA

Visualizza la versione completa : [C] Liberazione memoria occupata da una lista


UltraBeginner
23-11-2006, 16:18
Ciao a tutti, una domanda molto teorica.

Se io ho una lista semplice, cosi fatta:

Head-->elem1--->elem2--> etc -->Tail-->NULL

se voglio liberare l area di memoria occupata dalla lista basta l istruzione

free(Head) o devo fare un ciclo con una free per ogni elemento della lista?

Saluti!

GabbOne
23-11-2006, 16:30
se non ricordo male la free si puo' richiamare solo su dati allocati dinamicamente , quindi penso che a priori non sia possibile neanche fare una free(head) che solitamente un tipo di dato (puntatore) statico . Cmq per risondere alla tua domanda penso che per ogni elemento dorai effetuare una free, visto anche il fatto che per ogni elemento hai dovuto chiamare una malloc.

Lak3d
23-11-2006, 16:31
Un ciclo... head contiene solo l'inidirizzo di memoria del primo elemento. Per occhio che facendo free (head) e eliminando il primo non sarai pi in grado di puntare al secondo, in quanto il membro Next stato deallocato...

Miss che d'obbligo una forma a due puntatori:



while(Head!=NULL){
Ptr=Head;
Head=Head->Next;
free(ptr)
}

Loading