Stack
In de informatica is een stack een gegevensstructuur die wordt gebruikt om een verzameling objecten op te slaan. Afzonderlijke items kunnen met een push-bewerking aan een stack worden toegevoegd en daarin worden opgeslagen. Objecten kunnen worden opgehaald met een pop-bewerking, waarbij een item uit de stack wordt verwijderd.
Wanneer een object aan een stack wordt toegevoegd, wordt het boven op alle eerder ingevoerde items geplaatst. Wanneer een item wordt verwijderd, kan dit aan de boven- of onderkant van de stack gebeuren. Een stack waarin items aan de bovenkant worden verwijderd, wordt beschouwd als een "LIFO"-stack (Last In, First Out). Je kunt een LIFO-stack voorstellen als een stapel kaarten waarop je afzonderlijke kaarten legt en waar je vervolgens kaarten van bovenaf pakt. In een "FIFO"-stack (First In, First Out) worden items aan de onderkant verwijderd. Je kunt een FIFO-stack voorstellen als een rij in een verkoopautomaat, waarin items worden uitgegeven in de volgorde waarin ze in de automaat zijn geplaatst.
Stacks hebben verschillende toepassingen in computerprogrammering. LIFO-stacks kunnen bijvoorbeeld worden gebruikt om recent gebruikte objecten uit een cache op te halen. FIFO-stacks kunnen worden gebruikt om ervoor te zorgen dat gegevens worden opgehaald in de volgorde waarin ze zijn ingevoerd, bijvoorbeeld voor het verwerken van gegevens in een wachtrij.
Hoewel stacks vaak door softwareprogrammeurs worden gebruikt, merk je ze meestal niet op wanneer je een programma gebruikt. Dat komt doordat het maken van stacks en push- en pop-bewerkingen op de achtergrond worden uitgevoerd terwijl een toepassing actief is en niet zichtbaar zijn voor de gebruiker. Als een stack echter geen geheugen meer heeft, leidt dit tot een "stack overflow". Als dit niet correct door het programma wordt afgehandeld, kan een stack overflow een foutmelding veroorzaken of ervoor zorgen dat het programma crasht.
NOTE: De term "stack" kan ook verwijzen naar een protocolstack, die uit meerdere netwerkprotocollen bestaat die samenwerken. Elk protocol wordt ingedeeld in een van zeven verschillende lagen die in het OSI-model zijn gedefinieerd.
Test je kennis