Я хочу увидеть пример, где что-то печатается в стандартный вывод (или стандартный вывод), который не был бы напечатан, если бы миф был правдой, или где что-то не напечатано, что было бы, или где что-то напечатано, но текст неправильный. Почему настаивают на печати на стандартный вывод? Я видел несколько примеров, в которых запись в изменчивую переменную используется как «внешне наблюдаемый» побочный эффект. Меня не очень убеждают эти примеры, потому что я не понимаю, как я мог бы фактически наблюдать эти записи в обычном случае обычного процесса в пользовательском пространстве (т. е. не в ядре ОС, драйвере устройства или встроенном устройстве).
Печать должна выполняться кодом, который выполняется перед строкой, ответственной за неопределенное поведение. Меня не интересуют примеры неправильного вывода, выводимые после того, как строка с неопределенным поведением уже была выполнена. Примечание: поскольку нет смысла говорить о выполнении программы, поведение которой не определено, пожалуйста, при интерпретации этого абзаца вставьте «если поведение не было неопределенным».
Вот самое близкое, что мне удалось найти:
Код: Выделить всё
void bar (void);
int a;
void foo3 (unsigned y, unsigned z)
{
bar();
a = y%z;
}
Код: Выделить всё
foo3:
pushl %ebp
movl %esp, %ebp
pushl %esi
subl $4, %esp
movl 8(%ebp), %eax
xorl %edx, %edx
divl 12(%ebp)
Подробнее здесь: [url]https://stackoverflow.com/questions/78751187/can-you-find-a-real-example-of-time-travel-caused-by-undefined-behaviour[/url]