С C++ снова та же старая проблема: алиасинг памяти. На практике это не «тонкость стандарта», а источник тихих поломок, когда код выглядит корректно, а компилятор имеет полное право его переписать так, что результат станет мусором.
Суть кейса простая: один и тот же кусок памяти читают и пишут через разные типы, а разработчик надеется на «ну оно же работает». Иногда работает. До первого оптимизирующего билда, смены компилятора или архитектуры. Потом начинаются фантомные баги: неверные значения, сломанная сериализация, странные падения без воспроизводимости.
Особенно неприятно то, что рядом лежат другие undefined behavior, и они маскируют друг друга. В итоге расследование идёт не в код, а в туман. 🚨
Комитет по стандарту уже много лет пытается сузить эту мину, но окончательно вытащить её не выходит: обратная совместимость держит язык за горло. Для веб-инфраструктуры вывод простой — если в проде есть C++ и работа с буферами, бинарными протоколами или памятью «через cast», это не оптимизация, а зона риска.
Host & DNS
@HostDnsPro
С C++ снова та же старая проблема: алиасинг памяти. На практике это не «тонкость стандарта», а источник тихих
Этот пост опубликован в Telegram-канале Host & DNS. Подписаться можно по ссылке: @HostDnsPro.