Da http://www.learncpp.com/cpp-tutorial/79-the-stack-and-the-heap/Come si accede alle variabili locali della funzione dallo stack?
Qui è la sequenza di passi che avviene quando una funzione è chiamato :
- L'indirizzo dell'istruzione oltre la chiamata di funzione viene inserito nello stack. In questo modo la CPU memorizza dove andare dopo la funzione restituisce.
- La sala viene creata in pila per il tipo di ritorno della funzione. Questo è solo un segnaposto per ora.
- La CPU salta al codice della funzione.
- L'attuale cima della pila viene tenuta in un puntatore speciale chiamato frame dello stack.
- Tutto aggiunto alla pila dopo che questo punto è considerato "locale" per la funzione.
- Tutti gli argomenti della funzione vengono posizionati nello stack.
- Le istruzioni all'interno della funzione iniziano l'esecuzione.
- Le variabili locali vengono inserite nello stack mentre vengono definite.
Non sono sicuro di come funziona il punto n. Se tutti gli argomenti della funzione sono messi in pila, come vengono acceduti?
Se, per esempio, ci sono tre argomenti a
, b
e c
e sono posizionati sulla pila come questo da cima
| a |
| b |
| c |
| |
...
|___|
Ora, cosa succede quando la funzione vuole accedere c
? Sono spuntati a
e b
?
mi sembra impossibile che il passaggio 3 avvenga prima delle 6: ci dovrebbe essere * dentro * il codice della funzione corpo relativo alla valutazione del chiamante. Senza senso! – CapelliC