HardпамятьUB

Что такое heap corruption и какие симптомы?

1Постановка

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

2Решение

Heap corruption — повреждение метаданных кучи: write за границы, double free, use-after-free с последующей аллокацией.

// 1) Запись за границы массива
int* a = new int[10];
a[10] = 0;          // портит служебные поля рядом

// 2) Use-after-free
int* p = new int(5);
delete p;
*p = 10;            // запись в перевыделенную память

Симптомы: нестабильные падения далеко от причины, free(): invalid pointer, мусор в данных. Обнаружение: ASan, Valgrind, debug-аллокаторы. Профилактика: RAII, at() вместо [], sanitizer’ы в CI.

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

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

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