C e C ++ (prima di C ++ 11) usano la parola chiave opzionale auto
per le variabili locali. auto
significa automatico, ovvero queste variabili vengono create automaticamente entrando nello scope in cui sono dichiarate e automaticamente eliminate uscendo da tale ambito.
(Con C ++ 11 la parola chiave auto ha ricevuto nuovi significati.)
Am I correct in thinking that the correct phrase should be "Allocate to the Stack?"
Poiché le variabili locali sono automaticamente allocate, costruite, destrutturate e liberate, preferirei chiamarle semplicemente "variabili locali" (in comune volgare) o variabili automatiche (nella vecchia terminologia di linguaggio C / C ++), ma se dovessi , Direi "allocato nello stack".
Quando qualcuno parla di "push (on) to the stack", almeno per me, evoca la nozione di passare parametri, poiché con (parti di) molte convenzioni di chiamata, il passaggio di un argomento reale può essere fatto da operazione push, specialmente quando i parametri superano i registri degli argomenti. Tale spinta è spesso ordinata come lo sono gli argomenti / i parametri formali effettivi.
Sebbene un problema riguardi tutto questo, un buon compilatore preferirà i registri sulla memoria quando possibile. Un compilatore è anche libero di usare a volte un registro e altre volte usa la memoria per la stessa variabile, a patto che sia in grado di tenerlo tutto dritto (cioè non fa alcun tipo di errore nel farlo). Può riutilizzare la stessa memoria o lo stesso / i registro / i per diverse variabili locali se può determinare che la loro durata non si sovrapponga.
Quindi, a volte le variabili locali non ottengono alcuno spazio di stack allocato perché è allocato ai registri o riusando una memoria esistente.
Dico che la migliore terminologia è chiamarle solo variabili locali o descriverle come dichiarate localmente.