<< *c << endl;
почему каждый раз выводится одно и то же число? я к тому что эксплисит каст ведь должен тупо интерпретировать указатель на чар как указатель на инт, т.е. забирать еще 3 байта потом. я ожидал что будет:
а) при каждом полном ребилде разное число (разные байты после байта с 123)
б) теоретический сегментейшн фолт изза попытки залезть в недоступный участок памяти
почему ни а ни б не произошло? в дебагере в памяти всегда идет cc cc cc дальше и не меняется даже после ребилда
Потому что C-style cast резолвится в reinterpret для которого ты нарушаешь strict aliasing rule. Запись переменной типа char не может приводить к изменению переменной типа int
В дебаге там вроде спец значениями память заполняется, оттуда эти сс сс сс
Обсуждают сегодня