Linker, Loader und ausführbare Formate
Wo liegt während der Ausführung eine in einer C-Funktion deklarierte lokale Variable ohne static (automatische Variable)?
- AIn der Section .data
- BAuf dem Stack (oder in Registern)
- CAuf dem Heap
Antwort und Erläuterung anzeigen
Antwort: B. Auf dem Stack (oder in Registern)
Lokale Variablen werden beim Aufruf der Funktion im Stack-Frame angelegt (durch Optimierung können sie auch nur in Registern liegen) und verschwinden bei der Rückkehr aus der Funktion. Daher kann jeder Aufruf bei Rekursion auch bei beliebig tiefer Verschachtelung derselben Funktion eigene Variablen haben. In der ausführbaren Datei gibt es keine Section für lokale Variablen; der Speicher wird am Funktionsanfang durch Verschieben des Stack-Pointers reserviert.