info allocazioni di memoria
Posted by fra85 on 01-02-2012 17:32
Ciao ragazzi,mi sto trovando in difficoltà con le allocazioni di memoria.
Non sono molto pratica di c,sto iniziando a studiarlo da poco, e ho notato che bisogna allocare la memoria quando si inizializzano le liste e deallocarla quando si eliminano gli elementi della lista.
Di solito in java,per svuotare una lista per esempio assegnavo a
testa= NULL e automaticamente mi svuotava la lista. Con c tutto questo è possibile???

Ho implementato dei codici per deallocare lo spazio relativo ad un nodo della lista,ma poi il puntatore non mi punta più alla lista ancora piena ma a null e non capisco perchè...


//mi estrae la testa,e mi restituisce l'attuale testa della lista
struct nodo_lista_adiacenti *estrai_testa(struct nodo_lista_adiacenti *testa)
{
struct nodo_lista_adiacenti *corrente;
corrente= testa;

if(corrente != NULL)
{
testa= testa->next;
free(corrente);

}
return testa;
}

oppure

struct nodo_lista_adiacenti *elimina_elemento_lista(int n,struct nodo_lista_adiacenti *testa)
{
struct nodo_lista_adiacenti *corrente, *precedente;

for ( corrente = testa , precedente = NULL ;
corrente != NULL && corrente -> info != n;
precedente = corrente , corrente = corrente -> next );

//caso in cui non si trova n e arriviamo alla fine
if ( corrente == NULL ) return testa ;
if ( precedente == NULL ) testa = testa -> next ;//n si trova nel primo nodo
else precedente -> next = corrente -> next ;
free ( corrente );

return testa ;

}

I codici mi sembrano giusti,senza la deallocazione funziona tutto bene,appena aggiungo la deallocazione ho problemi...

Grazie...
Powered by: vbHome (lite) v3.8 and vBulletin v2.3.1
Copyright © 2000 - 2002 Jelsoft Enterprises Limited