Mediumинициализация
Что такое zero-initialization и когда оно происходит?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Zero-init — инициализация нулём (0 для целых, 0.0 для double, null для указателей, false для bool). Происходит автоматически для статических и глобальных переменных. НЕ происходит для локальных переменных встроенных типов — там значение неопределённое, чтение — UB.
int global; // 0 (zero-init, static storage)
static int s; // 0 (static storage)
void f() {
int local; // НЕ инициализирована — чтение UB
int x{}; // 0 (value-init через {})
int* p = new int(); // 0 (скобки дают value-init)
int* q = new int; // НЕ инициализирован
}Частый источник неопределённого поведения — забыть инициализировать локальный int/bool/указатель. Пишите int x{}; или int x = 0;.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.