Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: stack, heap, allocation, escape analysis, garbage collector

В чём разница между stack и heap?

Проверяет понимание моделей памяти и аллокации в Go.

Короткий ответ

Стек — быстрый LIFO-пулл памяти для локальных переменных функций, освобождаемый при выходе из функции. Куча — более медленное, но гибкое хранилище для объектов с динамическим временем жизни, управляемое сборщиком мусора. Go компилятор решает, что аллоцировать на стеке, а что — в куче, через escape-анализ.

Длинный ответ

Стек:

  • Малый размер, автоматическое управление.

  • Быстрая аллокация/деаллокация (движение указателя).

  • Переменные живут до конца функции.

Куча:

  • Большой объём, управление GC.

  • Аллокация через runtime, освобождение при сборке мусора.

  • Объекты могут жить дольше, чем функция, их используют указатели и shared-data.

Escape-анализ:

  • Компилятор поднимает переменные на куча, если они «убегают» из стека.

Вывод:

Локальные не-escape встают на стек, разделяемые и возвращаемые по указателю — в куче.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Golang

    Golang

Ключевые слова

#stack

#heap

#allocation

#escape analysis

#garbage collector

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.