Повторяется ли непонсированное поведение?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Повторяется ли непонсированное поведение?

Сообщение Anonymous »

tl; dr < /strong>

у меня есть программа, которая «работает», но делает это частично через Непоследовательное поведение < /strong>. Я осознаю, что код с неопозиившим поведением технически может сделать что -нибудь - однако, он должен сделать что -то , и я хотел бы знать, является ли что -то детерминированным. Если я использую один и тот же набор входов и запускаю один и тот же двоичный файл несколько раз, будет ли он вести себя точно так же каждый раз (даже если само «поведение» не определено)? Если это так, есть ли также способ определить, что он будет делать? В дополнение к нескольким устаревшим методам кодирования, которые компилятор сейчас не отклоняется, я отметил ряд неопозиционных поведений в коде, в основном из формы a [i ++] = '\ 0' или if (a-i] == '\ 0') или другие подобные тревожные структуры. Несмотря на это, код в своем текущем состоянии работает. />

Я уже ознакомил себя с основами неопозиционного поведения и прочитал этот ответ, этот ответ и этот ответ, в дополнение к рассмотрению того, что должен сказать стандарт. Я уверен, что смогу переписать код, чтобы выполнить поведение, которое он в настоящее время демонстрирует, предполагая, что я могу определить, как он ведет себя сейчас. Тем не менее, в коде есть достаточно проблем, что использование отладчика, чтобы определить, что происходит в каждом экземпляре, представляет собой нетривиальную задачу, и я не уверен, что могу доверять текущему поведению, чтобы повторить себя, если я перенес бинар в среду отладки. начальное состояние? Я готов декомпилировать двоичные файлы, запустить отладчиков и (если все остальное не удается) просто попробовать оба возможных интерпретации каждого экземпляра, чтобы увидеть, какой один работает, но я хотел бы знать, есть ли способ, если это возможно , даже если поведение фактического кода не определено.

Подробнее здесь: https://stackoverflow.com/questions/797 ... eat-itself
Ответить

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

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

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

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

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