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