- 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"
|