Wat is Heap?

Geheugengebied waaruit tijdens het draaien van een programma met onder meer malloc geheugen van de benodigde grootte wordt gereserveerd en met free weer wordt teruggegeven. Herhaald reserveren en vrijgeven kan fragmentatie veroorzaken.

Japanse benaming: ヒープ

“Heap” komt voor in 6 oefenvragen uit 1 onderwerpen, bijv. Linker, loader en uitvoerbare formaten.

Vakgebied: Linker, loader en uitvoerbare formaten

Nu oefenen: vragen over Heap

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.

“Heap” in de toelichting

Vragen met “Heap” (6)

  1. Welk voordeel is juist van de indeling waarin heap en stack van een proces in tegengestelde richting groeien met ertussen een breed vrij gebied?
  2. Uit welk gebied van het proces wordt het met malloc in C gereserveerde geheugen in het algemeen genomen?
  3. Welke volgorde van de geheugenindeling van een gangbaar proces op Linux en dergelijke, van laag naar hoog adres, is juist?
  4. Wat is het juiste doel van ASLR (address space layout randomization)?
  5. Welke aanval is gemakkelijker te voorkomen door te verbieden dat een geheugenpagina tegelijk „beschrijfbaar” en „uitvoerbaar” is (W^X, scheiding van schrijven en uitvoeren)?
  6. Wat gebeurt er in het algemeen op Linux en dergelijke als recursie te diep wordt en de bovengrens van de stack wordt overschreden?

Vergelijkingen met deze term

Verwante termen

ASLR Via Paginatabel Page fault BSS-sectie Dynamisch linken Dynamische linker ELF Entry point Fragmentatie

Naar de woordenlijst