|
|
|
|
Strumenti |
29-03-2010, 20:30 | #1 |
Junior Member
Iscritto dal: Mar 2010
Messaggi: 4
|
[C]Aiuto per la free di una lista
Devo implementare una funz. void free_List (list_t ** pt) che libera l'area di memoria occupata da una lista.
la struttura dati lista è così definita: Codice:
typedef struct { /** la testa della lista */ elem_t * head; /** la funzione per confrontare due chiavi */ int (* compare) (void *, void *); /** la funzione per copiare una chiave */ void * (* copyk) (void *); /** la funzione per copiare un payload*/ void * (* copyp) (void *); } list_t; typedef struct elem { /** chiave */ void * key; /** informazione */ void * payload; /** puntatore elemento successivo */ struct elem * next; } elem_t; Codice:
void free_List (list_t ** pt){ if(!(*pt)) errno = EINVAL; else{ /**Se la lista non è vuota libera l'area di memoria occupata da tutti i suoi elementi*/ if ((*pt)->head!=NULL) liberalista((*pt)->head); free(*pt); (*pt)=NULL;} return; } void liberalista (elem_t *e){ elem_t* tmp = e->next; free(e->key); free(e->payload); free(e); if(tmp!=NULL) liberalista(tmp); } sapreste dirmi se c'è qualche problema? grazie. |
29-03-2010, 21:52 | #2 |
Senior Member
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
|
sinceramente non capisco perchè vai a incasinarti con puntatori a puntatori...
cmq..se quelli nella prima struct sono puntatori a funzione...mi sembra giusta |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:53.