Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    1

    [C] usare free liste concatenate

    Salve, ho studiato e cercato online ma ho qualche dubbio che non riesco a togliermi.. magari potete darmi una mano.. se ho una lista concatenata non doppia con i nodi fatti così:

    codice:
    typedef struct struttura *Ptr;
    struct struttura {
    int a;
    float b;
    Ptr successivo; 
    }
    Volevo liberare prima ogni singolo campo e poi il puntatore ad ogni nodo e ho fatto così:
    ovviamente quando la chiamo l è il puntatore al primo nodo

    codice:
    void funzionelibero(link l)
    {
        if (l->successivo== NULL)
        {
            free(l->a);
            free(l->b);
            return;
        }
        funzionelibero(l->successivo);
        free(l);
    }
    Però mi segnala un errore e da quanto ho capito credo ci sia perché free si aspetta un puntatore alla memoria da liberare e non un valore preciso.. allora, a questo punto, scriverei così:
    codice:
    void funzionelibero(link l)
    {
        if (l->successivo== NULL)
        {
            return;
        }
        funzionelibero(l->successivo);
        free(l);
    }
    Il punto è: è giusto? Ha senso? Si liberano da soli tutti i campi dei nodi? Facendo così ho la "sensazione" di liberare solo il puntatore ai nodi ma i nodi continuano ad esistere da qualche parte..

    Potreste darmi una mano? Come dovrei farlo correttamente?
    Grazie in anticipo per l'aiuto e la pazienza!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Un attimo ... a e b non sono puntatori, non ha senso usare free per loro
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.