Linker, loader en uitvoerbare formaten

Waar wordt tijdens uitvoering een in een C-functie gedeclareerde lokale variabele (automatische variabele) zonder static geplaatst?

  1. AIn de .data-sectie
  2. BOp de stack (of in een register)
  3. 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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Uit welk gebied van het proces wordt het met malloc in C gereserveerde geheugen in het algemeen genomen?
  2. Welke volgorde van de geheugenindeling van een gangbaar proces op Linux en dergelijke, van laag naar hoog adres, is juist?
  3. Welk voordeel is juist van de indeling waarin heap en stack van een proces in tegengestelde richting groeien met ertussen een breed vrij gebied?
  4. Welke omschrijving van statisch linken is juist?
  5. Welk voordeel van dynamisch linken (gedeelde bibliotheken) is juist?

Vergelijkingen bij dit onderwerp