MediumRAIIGC
Чем C++ без GC справляется с управлением памятью?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
C++ использует детерминированное уничтожение через деструкторы: разработчик точно знает, когда объект умрёт (выход из scope, удаление указателя). RAII автоматизирует это — unique_ptr/shared_ptr для памяти, lock_guard для мьютексов, fstream для файлов.
void process() {
auto p = std::make_unique<Widget>(); // RAII: авто-delete
std::lock_guard<std::mutex> lk(m); // RAII: авто-unlock
std::ifstream file("data.txt"); // RAII: авто-close
} // деструкторы вызываются детерминированно, в обратном порядкеПреимущества перед GC: предсказуемость (нет пауз — важно для real-time), своевременное освобождение некомпьютерных ресурсов (GC не знает про файлы/сокеты), меньше overhead. Недостаток: ответственность за ownership.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.