De stapel en de heap zijn twee verschillende geheugengebieden die in computerprogramma's worden gebruikt.
De stapel
- De stapel is begrensd hoeveelheid geheugen die wordt gebruikt voor het opslaan van lokale variabelen, functieparameters en de retouradressen voor functieaanroepen.
- Het wordt een "stapel" genoemd omdat het laatste item dat aan de stapel is toegevoegd, het eerste item is dat wordt verwijderd.
- De stapel wordt automatisch toegewezen wanneer een functie wordt aangeroepen, en wordt ongedaan gemaakt wanneer de functie terugkeert.
De hoop
- De heap is dynamisch toegewezen geheugengebied dat kan worden gebruikt om elk type gegevens op te slaan.
- Het groeit en krimpt indien nodig, afhankelijk van de hoeveelheid geheugen die door het programma wordt gevraagd.
- De heap is toegankelijk via pointers.
Verschil
- Het belangrijkste verschil tussen de stapel en de heap is dat de stapel automatisch wordt toegewezen en vrijgegeven door de compiler, terwijl de heap handmatig moet worden toegewezen en vrijgegeven door de programmeur.
Hier is een tabel met een samenvatting van de verschillen tussen de stapel en de heap:
| Kenmerk | Stapel | Hoop |
|---------|-------|------|
| Toewijzing | Automatisch | Handmatig |
| Deallocatie | Automatisch | Handmatig |
| Maat | Begrensd | Dynamisch |
| Toegang | Wijzers | Wijzers |
| Doel | Lokale variabelen, functieparameters, retouradressen | Elk type gegevens | |