Можете ли вы найти реальный пример «путешествия во времени», вызванного неопределённым поведением?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Можете ли вы найти реальный пример «путешествия во времени», вызванного неопределённым поведением?

Сообщение Anonymous »

Мне любопытно. Кто-нибудь знает негипотетический контрпример C или C++ мифу о том, что «влияние неопределенного поведения ограничивается кодом, который выполняется после строки с неопределенным поведением»? Другими словами, я хочу увидеть пример неопределенного поведения, «путешествующего во времени» и вызывающего внешне видимый эффект. Под негипотетическим я подразумеваю пример реального компилятора промышленного уровня (желательно также недавней версии), нарушающего это предположение.
Я хочу увидеть пример, где что-то печатается в стандартный вывод (или стандартный вывод), который не был бы напечатан, если бы миф был правдой, или где что-то не напечатано, что было бы, или где что-то напечатано, но текст неправильный. Почему настаивают на печати на стандартный вывод? Я видел несколько примеров, в которых запись в изменчивую переменную используется как «внешне наблюдаемый» побочный эффект. Меня не очень убеждают эти примеры, потому что я не понимаю, как я мог бы фактически наблюдать эти записи в обычном случае обычного процесса в пользовательском пространстве (т. е. не в ядре ОС, драйвере устройства или встроенном устройстве).
Печать должна выполняться кодом, который выполняется перед строкой, ответственной за неопределенное поведение. Меня не интересуют примеры неправильного вывода, выводимые после того, как строка с неопределенным поведением уже была выполнена. Примечание: поскольку нет смысла говорить о выполнении программы, поведение которой не определено, пожалуйста, при интерпретации этого абзаца вставьте «если поведение не было неопределенным».
Вот самое близкое, что мне удалось найти:

Код: Выделить всё

void bar (void);

int a;

void foo3 (unsigned y, unsigned z)
{
bar();
a = y%z;
}
Согласно блогу, указанному выше, некоторая (неизвестная) версия clang компилирует это в:

Код: Выделить всё

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]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»