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 подскажет развёрнутый ответ в реальном времени.