Стек вызовов (от англ. call stack) — это структура данных, которая управляет вызовами функций во время выполнения программы. 4
Основное назначение стека — отслеживать место, куда каждая из вызванных процедур должна вернуть управление после своего завершения. 2 Для этого при вызове процедуры в стек заносится адрес команды, следующей за командой вызова («адрес возврата»). 23
Процесс работы стека: 2
Кроме адресов возврата в стеке могут сохраняться другие данные, например: значения регистров с их последующим восстановлением, аргументы, переданные в функцию, локальные переменные — временные данные функции и другие произвольные данные. 23
В языках программирования высокого уровня специфика стека вызовов обычно скрыта от программиста. 1 Но есть исключения, например, в Forth есть прямой доступ к системному стеку вызовов (под названием «стек возвратов»). 23