Ответ
Стек вызовов (call stack) — это структура данных, которая хранит информацию о вызовах функций в программе. Работает по принципу LIFO (Last In, First Out): последняя вызванная функция обрабатывается первой.
При вызове функции в стек помещается её контекст (аргументы, локальные переменные, адрес возврата). Когда функция завершается, её контекст удаляется из стека.
Пример в Go:
func main() {
a()
}
func a() {
b()
}
func b() {
println("Hello from b")
}
Стек при выполнении:
main()main()→a()main()→a()→b()- После завершения
b()стек уменьшается
Если стек переполняется (например, при бесконечной рекурсии), происходит stack overflow. В Go размер стека по умолчанию ~1MB на горутину.