Een stack (Engels voor stapel) is in de informatica een datastructuur voor de opslag van een wisselend aantal elementen waarbij geldt dat het element dat het laatst werd toegevoegd, het eerst weer wordt opgehaald. Dit principe wordt ook wel LIFO (Last In First Out) genoemd. De tegenhanger van de stack is de queue, die volgens het FIFO (First In First Out) principe werkt. Een stack is te vergelijken met een stapel borden: het laatste bord dat je op de stapel heb gelegd pak je er het eerst weer van af. Het eerste (onderste) bord van de stapel komt als laatste. Een bord tussen de stapel uit pakken kan ook, maar niet zomaar.
Een stack kan eenvoudig geïmplementeerd worden als een array met een pointer die naar het laatste stackelement wijst, of als een gelinkte lijst.
Bij stackoperaties werken een aantal instructies samen:
Bij onjuist gebruik kunnen twee fouten optreden:
Een zogenaamde callstack wordt gebruikt bij het aanroepen van subroutines in computerprogramma's. Het returnadres, dat de eerstvolgende uit te voeren instructie bevat, vormt hier het element dat wordt opgeslagen en weer teruggehaald. De stackpointer is meestal een van de registers van een processor. Bewerkingen hiermee kosten zeer weinig tijd. Sommige microprocessors hebben verschillende stackpointers.
Een variabelenstack wordt gebruikt voor het opslaan van lokale variabelen. Het is technisch mogelijk dat de callstack en de variabelenstack dezelfde is. Deze constructie is echter niet gebruikelijk omdat hij bijzonder kwetsbaar is voor programmeerfouten, waardoor het returnadres beschadigd raakt. Een samenhangend blok stackgegevens met returnadres, aanroepparameters en lokale variabelen heet een frame.
Er worden nog steeds microprocessoren gemaakt met een stackgeöriënteerde instructieset, bijvoorbeeld de ST20 van ST Microelectronics. Door hun eenvoud zijn meerdere kernen per chip realiseerbaar en dit blijkt op te wegen tegen de hogere kloksnelheid die met een registerarchitectuur mogelijk is.
Rekenmachines van HP maakten voorheen gebruik van de zogenaamde omgekeerde Poolse notatie (Eng: Reverse Polish Notation, RPN) hetgeen erop neerkomt dat je de rekenmachine bedient zoals in het voorbeeld van Forth hierboven.
Стэк | Zásobník (informatika) | Stak | Stapelspeicher | Stack (data structure) | Pila (estructura de datos) | Pino | Pile (informatique) | מחסנית (מבנה נתונים) | Verem (számítástechnika) | Hlaði (tölvunarfræði) | Stack | スタック | 스택 | Stack (Informatik) | Stekas | Stos (informatyka) | Стек | Sklad (računalništvo) | Stack (datastruktur) | Стек | 堆栈