Le strutture dinamiche

  • Mentre le strutture statiche vengono definite a tempo di compilazione, le strutture dinamiche vengono definite esplicitamente a tempo di esecuzione
  • Faccio presente che le variabili automatiche vengono anch'esse definite a tempo di compilazione, quando viene creato il record di attivazione o frame della funzione, anche se fisicamente sono allocate a tempo di esecuzione, quando la funzione viene richiamata, ma in maniera automatica
  • Per creare una struttura dinamica, occorrerà per prima cosa una variabile puntatore al tipo della variabile da creare
  • Invocherò poi la funzione malloc (o l'operatore new in C++) per creare la variabile attuale, assegnandone l'indirizzo alla variabile puntatore
  • Potrò chiamare la funzione free (o l'operatore delete in C++) quando non avrò più bisogno della variabile
  • È buon uso inizializzare a null o Ø tutti i puntatori ed assegnare il valore null o Ø ad ogni puntatore subito dopo la chiamata alla funzione free o la delete del puntatore
  • In questo modo saremo in grado di identificare immediatamente i puntatori che non sono "in uso", evitando di accedere a zone di memoria che non ci sono state assegnate o che sono state già "restituite"

© Ing. Stefano Salvi - All rights reserved