> На каком этапе исполнения программы определяется, попадет ли переменная в стек или в кучу — на этапе компиляции или рантайма? (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Aston

Стек: Go

> Пример ответа

В Go решение о том, попадет ли переменная в стек или в кучу, принимается на этапе компиляции, а не в рантайме. Компилятор Go (gc) выполняет анализ escape-анализа (escape analysis). Если компилятор определяет, что переменная не "убегает" за пределы функции (например, ее адрес не возвращается наружу и не сохраняется в глобальной области), она размещается в стеке. Если же переменная может быть доступна после завершения функции (например, возвращается указатель на локальную переменную), она выделяется в куче. Это решение статическое, основанное на анализе кода, и не меняется во время выполнения программы.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью