MediumGC

Что такое garbage collection и почему его нет в C++?

1Постановка

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

2Решение

GC автоматически находит недоступные объекты и освобождает их. В C++ его нет: детерминированное уничтожение через RAII даёт предсказуемость, GC не знает про некомпьютерные ресурсы (файлы, сокеты), паузы недопустимы в real-time, плюс обратная совместимость с C.

// Вместо GC — умные указатели с подсчётом ссылок
auto p = std::make_shared<Widget>();   // shared_ptr: авто-delete
auto q = std::make_unique<Widget>();   // unique_ptr: один владелец
// последний shared_ptr, владеющий Widget, освобождает его детерминированно
  • RAII + умные указатели дают схожую автоматичность без пауз GC;
  • overhead GC по памяти/CPU недопустим для embedded/real-time;
  • Boehm GC существует как библиотека, если кому-то нужно — но это не часть языка.

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

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

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