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