Stack Kapazität
Speicherbedarf eines Stacks bei fester Kapazität: Speicher = Kapazitaet · Elementgroesse. Pre-allokierter Block, kein Overhead pro Element.
Stack Kapazität berechnen
Speicherbedarf eines Stacks bei fester Kapazität: Speicher = Kapazitaet · Elementgroesse. Pre-allokierter Block, kein Overhead pro Element.
- Speicher — Speicherbedarf
- Kapazitaet — Kapazität
- Elementgroesse — Elementgröße
Worum geht es?
Ein Stack (Last In First Out) wird in der Praxis meist als Array fester Größe mit einem top-Index implementiert. Der Speicherbedarf ist dann einfach die Kapazität mal die Elementgröße — push und pop arbeiten in O(1) ohne Allokation.
Klassische Anwendungsfelder sind der Aufrufstapel einer CPU (Funktion-Frames), die Auswertung von Ausdrücken, das Backtracking in rekursiven Algorithmen und Undo-Stacks in Editoren.
Die Formel
Speicher = Kapazität · Elementgröße
Umstellungen:
Kapazität = Speicher / Elementgröße
Elementgröße = Speicher / KapazitätDie Variablen
| Symbol | Bedeutung | Einheit | Erklärung |
|---|---|---|---|
| Kapazität | Kapazität | — | Maximale Anzahl Elemente. |
| Elementgröße | Elementgröße | Byte | Größe eines Elements. |
| Speicher | Speicherbedarf | Byte | Gesamter belegter Speicher. |
Minimal-Beispiel
Ein int32-Stack für 256 Einträge:
Speicher = 256 · 4
= 1024 Byte
= 1 KiBPraxis-Beispiele
Beispiel 1 — Thread-Aufrufstack
Ein POSIX-Thread bekommt typischerweise 8 MiB Stack (Default unter Linux). Bei einem Frame von 64 Byte ergibt das eine maximale Rekursionstiefe von:
Kapazität = 8 388 608 / 64
= 131 072 FramesBeispiel 2 — Mikrocontroller
Ein AVR mit 2 KiB RAM reserviert oft 256 Byte für den Stack. Bei einem 16-Bit-Frame (Return-Adresse) lassen sich also rund 128 verschachtelte Calls realisieren.
Beispiel 3 — Pointer-Stack
Ein Stack von 64-Bit-Pointern (8 Byte) mit Kapazität 1024:
Speicher = 1024 · 8
= 8192 Byte
= 8 KiB