Ради интереса немного освежил тему UB в C++ (и C заодно) и решил зафиксировать в блоге несколько ссылок, которые показались интересными/полезными. Дабы было проще затем найти.
Если хочется плотно погрузиться в данную тему, то вот этого, думаю, будет достаточно с лихвой: Ружье достаточной огневой мощи, чтобы на нем повеситься. Путеводитель C++ программиста по неопределенному поведению.
Если же нужно просто познакомиться с данной темой и впечатлиться тому, насколько все неоднозначно и непредсказуемо, то следующих ссылок будет достаточно. Ну а если захочется копнуть глубже, то тогда уже идем по ссылке выше и копаем, копаем, копаем... :)
Falsehoods programmers believe about undefined behavior. Статья специально для тех, кто думает, что раз у меня сейчас все работает, то все нормально ;)
What Every C Programmer Should Know About Undefined Behavior #1/3 с продолжениями: часть два, часть три. Как по мне, так обязательно к прочтению.
Why undefined behavior may call a never-called function. Разбор нашумевшего несколько лет назад примера, когда clang очень уж хитро поступил с вызовом функции по нулевому указателю.
Undefined behavior can result in time travel (among other things, but time travel is the funkiest). Рассказ о том, до чего может дойти компилятор в эксплуатации UB.
Security flaws caused by compiler optimizations. Несколько простых примеров того, как оптимизатор может выбросить куски кода, важные с точки зрения безопасности/секретности.
Towards Optimization-Safe Systems: Analyzing the Impact of Undefined Behavior. PDF-ка от исследователей от MIT (краткое резюме о результатах этого исследования на русском можно прочитать на opennet.ru).
Если кто-то из читатей знает статьи/посты на тему UB, которые заслуживают включения в данный список, то делитесь ссылками в комментариях.
Комментариев нет:
Отправить комментарий