Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] Domanda sulle liste

    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!

  2. #2
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    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.

  3. #3
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    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:

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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.