18
Окт
2021

Выполнение "UB-кода" из-за неправильного предсказания ветвления

Есть код типа такого:

if (ptr) ptr->do_something();

Из-за неудачного branch prediction CPU начал выполнять ptr->do_something(); с нулевым указателем. Что происходит в таком случае? segfault неявно подавляется? Является ли код, где UB возникает только в случае перестановки операций, UB в целом?

Источник: https://ru.stackoverflow.com/questions/1339563/%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-ub-%D0%BA%D0%BE%D0%B4%D0%B0-%D0%B8%D0%B7-%D0%B7%D0%B0-%D0%BD%D0%B5%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B2%D0%B5%D1%82%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F

Тебе может это понравится...

Добавить комментарий