Когда компилятор видит ваш C++, он не видит магию. Он видит: «а точно ли эти два указателя на разную память?»
Алиасинг — это когда код думает, что у него две отдельные сущности, а оптимизатор уже подвинул стул и смеётся из-за угла.
В арбитраже это было бы как два адсета, которые «точно не пересекаются», а потом банятся одним и тем же антифродом 😏
Проблема старая:
- раньше можно было случайно стрелять себе в ногу через UB;
- сейчас стандарт пытается формализовать, что можно, а что нельзя;
- в будущем комитет опять обещает «починить», но без жёстких гарантий.
Вывод простой: если в коде есть невнятный доступ к памяти — оптимизатор вас переиграет.
Как плохой креатив: кажется рабочим, пока не включили реальный трафик.
Кто любит жить на интуиции — тот потом читает стек-трейсы и плачет.
Traffic Разбор
@TrafficRazborPro
Когда компилятор видит ваш C++, он не видит магию. Он видит: «а точно ли эти два указателя на разную память?»
Этот пост опубликован в Telegram-канале Traffic Разбор. Подписаться можно по ссылке: @TrafficRazborPro.