Linker, loader en uitvoerbare formaten
Waar wordt tijdens uitvoering een in een C-functie gedeclareerde lokale variabele (automatische variabele) zonder static geplaatst?
- AIn de .data-sectie
- BOp de stack (of in een register)
- CIn de heap
Antwoord en toelichting tonen
Antwoord: B. Op de stack (of in een register)
Een lokale variabele wordt gemaakt in het stackframe op het moment dat de functie wordt aangeroepen (door optimalisatie kan hij ook alleen in een register staan) en verdwijnt bij de terugkeer. Daarom kan elke recursieve aanroep van dezelfde functie, hoe diep ook, een eigen variabele hebben. Het uitvoerbare bestand heeft geen sectie voor lokale variabelen; aan het begin van de functie wordt de stackpointer verschoven om ruimte te reserveren.
Verder: nog 9 vragen over Linker, loader en uitvoerbare formaten