char *p = NULL;
printf("%s", p);
Почему выше не происходит ошибка сегментации? НоПочему printf с n генерирует ошибку сегментации?
char *p = NULL;
printf("%s\n",p);
?
Чтобы добавить, что я знаю, что это неопределенное поведение для использования таким образом, но все еще задается вопросом, почему он генерирует ошибку сегментации 6 из 6 раз с \ n, но не без нее.
Мне задали этот вопрос в интервью, и я дал тот же ответ, что и его неопределенное поведение, но их ожидание состояло в том, чтобы дать ему разум, и я не знаю, что еще я могу добавить. Любые мысли об этом?
Передача указателя NULL на 'printf()' вызывает Undefined Behavior. Вам повезло, что поведение ** было разным для двух ситуаций: вы должны это заметить и спросить, почему. Но нет причин, кроме неопределенного. Не делай этого. – pmg
Ссылаясь на недопустимую память, это неопределенное поведение, это не имеет никакого отношения к '\ n'. – Rohan
Передача указателя NULL на 'printf()' в порядке. Просто не передавайте его как допустимую строку или такую. Лежа нахмурился, и наказание было UB. – Deduplicator