Easyпамятьинструменты
Что такое memory leak detection и какие инструменты есть?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Обнаружение утечек памяти — через sanitizer’ы и профилировщики. Лучший подход — не допускать утечки через RAII/умные указатели, а инструменты использовать для проверки.
// AddressSanitizer: ловит use-after-free, double-free, leaks
// g++ -fsanitize=address,leak main.cpp
int* p = new int(42);
// забытый delete — ASan/LSan сообщит при выходе
// Valgrind: без перекомпиляции, runtime-анализ
// valgrind --leak-check=full ./program- AddressSanitizer (
-fsanitize=address) — compile-time, быстро (10–20% overhead), ловит UAF/leaks; - Valgrind/Memcheck — runtime для Linux, без перекомпиляции, медленный (10–50×), очень подробный;
- Visual Studio CRT debug heap —
_CrtDumpMemoryLeaksв Windows; - tcmalloc/jemalloc — heap profiler в production.
Стратегия: ASan в CI на тестах, Valgrind для regression-тестов, profiling в production.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.