Begriff
Stack
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Der Stack ist ein Speicherbereich, in dem ein Programm merkt, welche Funktion gerade läuft und wohin es danach zurückkehren muss. Er funktioniert wie ein Stapel: Das Neueste liegt oben und wird zuerst wieder entfernt.
Merksatz: Der Stack verwaltet Funktionsaufrufe und lokale Daten in der Reihenfolge "zuletzt rein, zuerst raus".
Wenn eine Fehlermeldung einen Stack Trace zeigt, siehst du die Kette der Funktionsaufrufe bis zum Fehler. Das hilft beim Debugging. Rekursion nutzt ebenfalls den Stack: Jeder rekursive Aufruf legt einen neuen Rahmen auf den Stapel.
Jeder Thread hat typischerweise einen eigenen Stack. Ein Stack Frame enthält Rücksprungadresse, Parameter, lokale Variablen und gespeicherte Register. Der Heap ist dagegen für dynamisch lebende Daten gedacht, die nicht automatisch mit dem Funktionsende verschwinden.
Zu tiefe Rekursion oder zu große lokale Daten können einen Stack Overflow auslösen. In sicherheitskritischer Software sind Stack Layout, Bounds Checks und Schutzmechanismen wie Stack Canaries wichtig. Compiler optimieren manche Aufrufe per Tail Call, aber darauf sollte man sich nicht blind verlassen.
Quick-Check
Was speichert der Stack?
Funktionsaufrufe, Rücksprungadressen, lokale Daten und Ausführungszustand.Warum ist ein Stack Trace nützlich?
Er zeigt, über welche Funktionskette ein Fehler entstanden ist.Was ist ein Stack Overflow?
Der Stack wird zu groß, etwa durch zu tiefe Rekursion oder sehr große lokale Daten.