История изменений
Исправление
hateyoufeel,
(текущая версия)
:
Грубо говоря, для случаев, когда в функцию прилетает NULL, компилятор волен сгенерировать любое говно вместо кода. Например, выкинуть проверку.
В том коде проверка идет после использования указателя, там была бы проблема даже при просто потере указателя
Ты не понял. Это намеренный пример UB и демонстрация бага, который может возникнуть.
волатайл особо не рекомендуют использовать если что
Кто не рекомендует? Голоса в твоей голове?
по твоей логике можно все глобальные переменные укатать в волатайлы смело
Нет, это не моя логика. Я не знаю, откуда ты взял эту идею. В volatile нужно укатать те объекты, порядок доступа к которым имеет значение и может наблюдаться извне. Под «извне» подразумевается не только снаружи программы (например, как в случае с разделяемой памятью), но и из других тредов и контекстов, в т.ч. из обработчиков прерываний и сигналов.
Ты опять лужу решил вспенить..? Сколько клонадить будешь…?
Я буквально тебе стандарт языка, которым руководствуются авторы компиляторов, пересказываю. Ты со стандартом языка пытаешься спорить, что ли?
Друг, а что если нет сокетов, нет абстрактных машин и объектов нет, ничего нет кроме железа…?
Имеется ввиду абстрактная машина языка, а не виртуалка. Под объектами имеются ввиду объекты языка, а не объекты из ООП.
у тебя язык закончился на абстракции и стандарте, ты под капот ему не лазаешь, многие проблемы не знаешь даже, т.к. для тебя Си - это gcc, clang, g++ и что там в стандарте написали…
Это не для меня. Это для авторов компиляторов язык – то, что в стандарте написали. Если реализация языка не соответствует стандарту, то это реализация какого-то другого языка, а не Си.
Исправление
hateyoufeel,
:
Грубо говоря, для случаев, когда в функцию прилетает NULL, компилятор волен сгенерировать любое говно вместо кода. Например, выкинуть проверку.
В том коде проверка идет после использования указателя, там была бы проблема даже при просто потере указателя
Ты не понял. Это намеренный пример UB и демонстрация бага, который может возникнуть.
волатайл особо не рекомендуют использовать если что
Кто не рекомендует? Голоса в твоей голове?
по твоей логике можно все глобальные переменные укатать в волатайлы смело
Нет, это не моя логика. Я не знаю, откуда ты взял эту идею. В volatile нужно укатать те объекты, порядок доступа к которым имеет значение и может наблюдаться извне. Под «извне» подразумевается не только снаружи программы (например, как в случае с разделяемой памятью), но и из других тредов и контекстов, в т.ч. из обработчиков прерываний и сигналов.
Ты опять лужу решил вспенить..? Сколько клонадить будешь…?
Я буквально тебе стандарт языка, которым руководствуются авторы компиляторов, пересказываю. Ты со стандартом языка пытаешься спорить, что ли?
Друг, а что если нет сокетов, нет абстрактных машин и объектов нет, ничего нет кроме железа…?
Имеется ввиду абстрактная машина языка, а не виртуалка. Под объектами имеются ввиду объекты языка, а не объекты из ООП.
Исходная версия
hateyoufeel,
:
Грубо говоря, для случаев, когда в функцию прилетает NULL, компилятор волен сгенерировать любое говно вместо кода. Например, выкинуть проверку.
В том коде проверка идет после использования указателя, там была бы проблема даже при просто потере указателя
Ты не понял. Это намеренный пример UB и демонстрация бага, который может возникнуть.
волатайл особо не рекомендуют использовать если что
Кто не рекомендует? Голоса в твоей голове?
по твоей логике можно все глобальные переменные укатать в волатайлы смело
Нет, это не моя логика. Я не знаю, откуда ты взял эту идею. В volatile нужно укатать те объекты, порядок доступа к которым имеет значение и может наблюдаться извне. Под «извне» подразумевается не только снаружи программы (например, как в случае с разделяемой памятью), но и из других тредов и контекстов, в т.ч. из обработчиков прерываний и сигналов.
Ты опять лужу решил вспенить..? Сколько клонадить будешь…?
Я буквально тебе стандарт языка, которым руководствуются авторы компиляторов, пересказываю. Ты со стандартом языка пытаешься спорить, что ли?