В C++ есть один особенно неприятный вид багов: код выглядит логично, тесты молчат, а потом компилятор внезапно «решает», что вы имели в виду совсем не это.
Это алиасинг памяти. Простыми словами — когда два указателя или ссылки ведут себя так, будто они смотрят на одну и ту же область, а стандарт языка разрешает компилятору делать очень смелые оптимизации. Итог: UB, странные падения, неуловимые баги, которые всплывают только на одной сборке из десяти.
Разоблачение тут в том, что многие до сих пор думают: «ну если оно работает у меня локально, значит всё ок». Нет. С алиасингом в C++ локально может работать всё, а в релизе — ничего. Особенно когда вмешиваются оптимизации, другие версии компилятора и чуть более хитрый код.
У этой истории есть и прошлое, и настоящее, и попытки «починить всё стандартом» в будущем. Но пока главный вывод один: в C++ память не прощает небрежности. И чем сложнее код, тем дороже это незнание. ⚠️
Soft Launch
@SoftLaunchPro
В C++ есть один особенно неприятный вид багов: код выглядит логично, тесты молчат, а потом компилятор внезапно
Этот пост опубликован в Telegram-канале Soft Launch. Подписаться можно по ссылке: @SoftLaunchPro.