Linker, loader en uitvoerbare formaten

Welk voordeel is juist van de indeling waarin heap en stack van een proces in tegengestelde richting groeien met ertussen een breed vrij gebied?

  1. AOok als vooraf niet bekend is hoeveel elk van beide gebruikt, kan de vrije ruimte flexibel worden gedeeld
  2. BHeap en stack kunnen tegelijk dezelfde adressen gebruiken, dus het geheugen verdubbelt
  3. CHet overlopen van de stack gebeurt nooit meer
Antwoord en toelichting tonen

Antwoord: A. Ook als vooraf niet bekend is hoeveel elk van beide gebruikt, kan de vrije ruimte flexibel worden gedeeld

De heap groeit naar hogere en de stack naar lagere adressen, dus de ruimte ertussen is bruikbaar zowel voor programma's die veel heap gebruiken als voor programma's die veel stack gebruiken. Als aan elk een vaste grootte wordt toegewezen, kan het ene overlopen terwijl het andere ruimte over heeft. De stack heeft echter vaak een bovengrens, en te diepe recursie overschrijdt die en geeft een stack overflow.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Welke omschrijving van statisch linken is juist?
  2. Welk voordeel van dynamisch linken (gedeelde bibliotheken) is juist?
  3. Een dynamisch gelinkt programma werd naar een andere computer gekopieerd en uitgevoerd, maar startte niet. Wat is de meest waarschijnlijke oorzaak?
  4. Wat bouwt de linker in het uitvoerbare bestand in als er samen met een statische bibliotheek (.a-bestand) wordt gelinkt?
  5. Bij de GNU-linker kan een fout „undefined reference” optreden als een statische bibliotheek vóór het objectbestand dat haar gebruikt wordt geschreven, zoals in „gcc -lmylib main.o”. Wat is de juiste reden?

Vergelijkingen bij dit onderwerp