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

    [C] dubbi sulla free

    innanzi tutto salve a tutti sono nuovo del forum.
    il nostro professore di sistemi operativi ci ha assegnato una tesina da sviluppare in c, sotto ambiente linux. diciamo che per il momento ci siamo e dovremmo averla finita, in un punto del programma ci serve di scrivere/modificare un elenco alfabetico, quindi nel programma stesso apriamo il file di testo dove sono elencati alfabeticamente i nomi, e inseriamo nome per nome (riga per riga), gli elementi in una lista collegata, inseriamo nella giusta posizione quello da aggiungere e riscriviamo il file. ovviamente nella creazione dei nodi della lista viene piu volte chiamata la malloc e viene creato un puntatore per il prossimo nodo, ora se abbiamo capito bene, a meno di fare una free la memoria rimane riservata, quindi ci siamo inventati questo medoto per deallocare i vari spazi di memoria dei nodi della lista collegata. volevamo sapere se secondo voi ha senso quello che abbiamo scritto cosi di getto:

    struct listaLista {
    elementoLista info;
    struct listaLista *next;
    };



    void cancellaListaLista(struct listaLista *p) {
    if (p == NULL) return;
    struct listaLista *t;
    t = p->next;
    free(p);
    cancellaListaLista(t);
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Mi sembra che vada bene ...

  3. #3
    io pensavo di aggiungere un bel p=NULL sotto a free(p), nonostante non sia questo il caso ho letto che la malloc, come del resto la maggior parte delle funzioni del c, diventa piuttosto infamona in certi casi, e se venisse chiamata piu volte su un puntatore a una zona gia liberata non si puo prevederne il comportamento....mentre se viene chiamata su un puntatore nullo ovviamente non fa niente, quindi pensavo, il metodo prende in ingresso il puntatore del primo nodo della lista, si salva il puntatore al prossimo, fa la free sul nodo puntato da p, setta p a null e giu di ricorsione a bestia

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Sì.

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.