Delete elemento di una lista

di il
3 risposte

Delete elemento di una lista

In C++ quando cancello un elemento di una lista che è stato allocato dinamicamente in questo modo :

lista p=testa;
for(; p!=NULL; p=p->pun)
prec->pun=NULL; // trovo l'ultimo elemento
delete p;
if (p==testa)
testa=NULL;
else
prec->pun=NULL;


Se cancello l'elemento e quindi l'area di memoria puntata da p diventa inutilizzabile, il valore contenuto in p ci rimane oppure viene cancellato? La cosa più corretta sarebbe fare il test e poi cancellare, ma è solo una curiosità.

3 Risposte

  • Re: Delete elemento di una lista

    In generale, se deallochi della memoria, il contenuto rimane ma non puoi fidarti della sua persistenza, lo spazio potrebbe essere utilizzato per altri dati in qualsiasi momento.
  • Re: Delete elemento di una lista

    Non mi riferisco al contenuto della memoria puntata ma all'indirizzo di memoria contenuto in p il cui valore lo confronto con quello del puntatore testa ma solo dopo la delete con l'istruzione if (p==testa)
    Dopo che ho deallocato la zona di memoria, in p ci rimane sempre l'indirizzo di quell'area?
  • Re: Delete elemento di una lista

    Si ci rimane l'indirizzo, che non è più valido. Quindi per sicurezza va settato a NULL.
Devi accedere o registrarti per scrivere nel forum
3 risposte