Страницы

Поиск по вопросам

вторник, 10 декабря 2019 г.

strict aliasing и реальные компиляторы

#cpp #cpp11 #cpp14 #cpp17


Сразу же оговорюсь: я уважаю стандарт :)
"Закон есть закон" (с) Фердинанд Пасторелли  

Тем не менее - насколько это серьезно в реальной жизни? Хочется посмотреть на конкретные
примеры, где нарушение strict aliasing реально приводит к неприятностям, причем желательно
не запутанные примеры с передачей трех разных указателей на одно и то же место в памяти
в одну функцию, а что-то типа обнуления массива char через long long?

Еще раз прошу не подозревать в том, что я хочу получить ответ и на его основании
наехать на стандарт :)
    


Ответы

Ответ 1



Вот пример: char const * test(char const * p_data) { reinterpret_cast< int const * & >(p_data) += 1; // пропускаем 4 байта return(p_data); } -O3 mov rax, rdi ret -O3 -fno-strict-aliasing lea rax, [rdi+4] ret Online compiler

Комментариев нет:

Отправить комментарий