История изменений
Исправление
pavlick,
(текущая версия)
:
Причина вывода «not null» в том, что поведение программы не определено из-за разыменования нулевого указателя. То есть может быть любым. Вообще. На этом можешь остановить свой поток рассуждений, потому что, например, завтра может выйти новая версия GCC или Clang, которая на такой код будет выдавать форматирование диска, если указатель равен NULL, и это всё ещё будет корректным поведением компилятора.
Ой, ну вот этот вот бред про формат диска … ). ЮБ - почти всегда значит, что это отдано на откуп компилятору, он может оптимизировать, делать что хочет. Не, ну можно специально делать больно юзерам, как это делает шланг, а главное с такой оптимизации толку нет. Но лучше, конечно, прописать в стандарте - unspecified, чтобы шланг тоже начал делать так, как это наиболее приемлемо для программистов. Я это про обращение по нулевым указателям, нужно всегда читать память, а не пихать в регистры желаемый компилятором бред.
Исходная версия
pavlick,
:
Причина вывода «not null» в том, что поведение программы не определено из-за разыменования нулевого указателя. То есть может быть любым. Вообще. На этом можешь остановить свой поток рассуждений, потому что, например, завтра может выйти новая версия GCC или Clang, которая на такой код будет выдавать форматирование диска, если указатель равен NULL, и это всё ещё будет корректным поведением компилятора.
Ой, ну вот этот вот бред про формат диска … ). ЮБ - почти всегда значит, что это отдано на откуп компилятору, он может оптимизировать, делать что хочет. Не, ну можно специально делать больно юзерам, как это делает шланг, а главное с такой оптимизации толку нет. Ну лучше, конечно, прописать в стандарте - unspecified, чтобы шланг тоже начал делать так, как это наиболее приемлемо для программистов. Я это про обращение по нулевым указателям, нужно всегда читать память, а не пихать в регистры желаемый компилятором бред.