Re[23]: C++ illegal instruction
От: so5team https://stiffstream.com
Дата: 21.08.25 13:43
Оценка:
Здравствуйте, sergii.p, Вы писали:

SP>ну так и такой код


SP>
SP>char buffer[2] = {0x01, 0x02};
SP>short value = *(reinterpret_cast<short*>(buffer));
SP>


SP>строго говоря UB. Но никто же не отправляет программу в нокаут из-за этого. Это просто сломает невообразимую массу кода.

SP>Так что нельзя говорить, что при UB компилятор волен делать что угодно. Нифига он не волен Он может делать оптимизации — это да. А вот так просто класть программу — это беспредел.

Я уже давал в соседнем обсуждении примечательную ссылку: https://godbolt.org/g/o4HxtU
Этому примеру уже лет 8 или 9. В свое время он настоящий фурор произвел. Как наглядный пример того, что могут делать компиляторы.

Просто компиляторостроители пока еще сдерживаются совместимостью и отсутствием в старых стандартах некоторых новых механизмов (std::launder, std::bit_cast, std::start_lifetime_as). Чем дальше, тем меньше они будут сдерживаться. Типа того, что вам дали в руки std::bit_cast, вот и переписывайте свой говнокод, иначе наткнетесь на то, что компилятор очередное UB стал эксплуатировать.

Далеко не всем такое развитие событий нравится, но и остановить компиляторщиков вряд ли возможно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.