MediumUB

Что такое UB (undefined behavior) и почему оно опасно?

1Постановка

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

2Решение

UB — поведение, не определённое стандартом: выход за границы массива, чтение неинициализированной переменной, знаковое переполнение, разыменование нулевого указателя, двойное удаление. Компилятор оптимизирует код, предполагая отсутствие UB.

int arr[3] = {1, 2, 3};
int x = arr[5];        // UB — непредсказуемый результат
int* p = nullptr;
*p = 42;               // UB — может упасть, может «работать»
  • Главная опасность — непредсказуемость: ошибка проявляется далеко от причины;
  • Обнаружение — sanitizer’ы (-fsanitize=address,undefined), статические анализаторы.

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

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

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