Easyпамять

Чем стек (stack) отличается от кучи (heap)?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Стек — для локальных переменных и вызовов функций; выделение/освобождение = сдвиг указателя, очень быстро, но размер ограничен (1–8 МБ). Куча — динамическая память через new/malloc, гибче, но аллокация дороже (поиск блока, метаданные).

void f() {
    int a = 42;            // стек — мгновенно, авто-освобождение
    int* p = new int(42);  // куча — вручную delete
    delete p;
}
  • Стек: локальные объекты, параметры, быстрый, ограничен;
  • Куча: долгоживущие/большие объекты, ручное управление;
  • Утечки — только в куче; переполнение стека — глубокая рекурсия, большие локальные массивы.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.