Stack segment nebo jen stack je paměť dedikovaná podrutinám.
Nejdřív bych rád připomněl kapitolu o řetězení podrutin, konkrétně následující obrázek.
Call stack
Pro každé vlákno programu operační systém přiřadí call stack 1 což je jednoduše kus virtuální paměti, který se může nafukovat a zase smršťovat.
Call stack je něco jako nádoba, do které lze házet kostičky na sebe. Vyndat ale můžete jenom tu nejhornější kostičku. Tomu se také říká LIFO struktura 2 . Jednotlivým kostičkám se říká stack frame což je jen kus virtuální paměti dedikovaný pro dané volání podrutiny.
V rámci volací konvence vzniká pro každou volanou podrutinu stack frame.
Celá věc začne dávat mnohem větší smysl s obrázkem pro řetězení podrutin.
⚠️ Důležité k zapamatování
- Jakmile je podrutina dokončena, její stack frame se odstraní.
- Jakmile skončí celé vlákno, odstraní se i celý jeho call stack.