Не, я просто скорее к тому, что очень часто видел фразу, после события вызвавшего УБ, поведение программы не определенно и может случиться ВСЕ что угодно. Ну я хз, если у меня int i; if(i) printf("Ops"); То я не вижу как может случиться что угодно. Кроме того, что строка может напечататься или не напечататься. Просто какое-то дезинфо, а потом мой зад расстреливают хренами с словами ПОЛНОСТЬЮ НЕ ОПРЕДЕЛЕНО.

Комментарии: 20

  1. Karboflex

    Нуу ходят слухи что на некоторых платформах да и нет немного по разному в битовом прастранстве выглядят

    • Setpf

      Ну я к тому, что в целом выполнение программы будет вполне определено, кроме ее некоторой части. А полностью\не полностью уже зависит от изолированности этой части же?

      • Anonim

        Эта часть может к хуям поломать выполнение всех частей программы И никак это не изолировать, так как это — UB

        • Setpf

          Каким образом?

          • Serge

            Чтение из защищенной памяти, например. Колом может встать сразу все. Или чтение из регистра, который сбрасывается чтением или чтение из которого сбрасывает какой-то флаг

            • Setpf

              Я в голове крутил это, но я хз какие условия надо создать что бы это произошло. Типо регистры меняющие состояние при чтении это не хрена не стэк, на котором выделится эта переменная.

              • Serge

                Хуйнаны. Уже давно нет. Это ког, агда или хотя бы лямбда Вообще категория правда широкая, что-то ломает, что-то маловероятно. Насколько я помню С, там вообще не предполагается наличие стека, т.е. могутбыть бесстековые машины, на которых крутится С

                • Setpf

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

                  • Serge

                    70е, как и любое пионерское время, удивляет универсальными и неочевидными решениями

                    • Karboflex

                      23 год быстрее сделать кодогенерацию и стырить либу чем страдать с новым языком)

                      • Baskerville

                        были процы, у которых "регистры" отображались на память. то есть есть некий R0, который указывает на кусок в памяти, где какбе регистры. переключение контекста там было буквально заменой R0

                • Setpf

                  Ну все равно, переменная то объявлена, значит подразумевается, что под нее выделиться пространство и по запросу оттуда произведется чтение. Могу предположить, что в целях оптимизации оно не выделиться до момента ее инициализации. Но блин, явно прописано ее чтение. Хз короче тут уже мои фантазии без знания предметной области пошли. Нафиг. Просто горит, когда иногда тебе указывают на код и говорят УБ, но из-за МОЖЕТ ЧТО УГОДНО, не возможно определить критичность этого УБ. Вот недавно спрашивал в ++ конфе про союзы (в очередной раз), вроде уб уб уб уб, а по факту то на одной машине можно использовать не парясь и как бы зная, что это никуда не вылезет норм.

                  • Serge

                    С юнионами можно получить кучу веселья при сериализации

                    • Karboflex

                      Хотяяя книжки это всегда прикольно)

                  • Vga

                    вроде еще было более мягкое "неуточненное поведение"...

        • Setpf

          Тип если про какой нибудь strict aliasing еще понятно, (на самом деле нет, но механизм полной чертовщины можно вообразить). Но вот тип как тупиковое ветвление может вызвать что-то стремное я хз. Кроме собственно дурной работы этого самого тупикового ветвления.

      • Karboflex

        Компилятор очень тупая штука) я вот ниразу не видел чтобы компилятор использовал регистры R на х64 платформе

        • Serge

          icc?)

          • Karboflex

            Эта вобще специально тупая скотина) У меня гдето даже патчер лежит чтобы после него код нормально на амд выполнялся

            • Serge

              Ну ты бы еще ку-клукс-клановца нанял в ресторан в Гарлеме)

Не нашли ответ?

Вам также может быть интересно