Ciao,
stavo approfondendo un po' meglio alcune questioni come le variabili automatiche, variabili dinamiche, statiche e a ciò che avviene a livello di memoria:
stack, heap, area varibaili statiche.
A un livello macroscopico, possiamo affermare che la memoria per l'"utente applicativo" è suddivisa in 4 parti fondamentali:
1. Area programma
2. Area variabili statiche
3. Heap
4. Stack
L'area programma ha dimensione fissa e pure l'area della memoria statica è fissata a compile time. Le zone dell'heap e dello stack variano durante il ciclo di vita, seppur la loro dimensione complessiva sia costante.
Dunque è corretto dire che le variabili globali sono memorizzate nell'area delle variabili statiche, alla stregua di quelle definite static?
Sappiamo, inoltre, che la chiamata a una funzione genera un record di attivazione all'interno dello stack. A tal proposito ho qualche perplessità. Senza entrare nel dettaglio di come è fatto un record di attivazione, non mi è chiara la gestione, al suo interno, dei parametri formali. Se per quelli passati per valore è abbastanza evidente che essi verranno scritti nella medesima collocazione di memoria stack del record di attivazione, non mi è chiaro per quelli passati per indirizzo cosa avvenga. Viene creato una copia locale - nello stack - di un nuovo puntatore? La propria collocazione dipenderà dalla natura del puntatore? Puntatore di una variabile automatica e/o statica, piuttosto che dinamica?
Scusate ma su questo punto ho un po' di confusione.
Grazie mille.