Здравствуйте! Меня зовут Михаил Матросов, я ведущий инженер по разработке в компании Align Technology. В этом блоке мы с вами поговорим о неопределенном поведении, оно же undefined behavior, оно же просто UB. Вы уже, наверное, в курсе, что определенные ситуации в C++ приводят к неопределенному поведению. Некоторые из этих ситуаций вы сейчас можете видеть на экране. И если открыть текст стандарта C++ и поискать в нем фразу undefined behavior и ее вариации, то мы найдем около 320 вхождений. То есть ситуация, прямо скажем, не очень редкая. В соответствии со стандартом C++ стандарт C++ не накладывает никаких ограничений на поведение программы в случае неопределенного поведения. Это определение. Давайте его запомним и посмотрим на такую простую программку. Здесь несложно заметить, что мы производим разыменовывание нулевого указателя. Это неопределенное поведение. Как вы думаете, что, согласно стандарту C++, может произойти при выполнении этой программы? Поскольку стандарт C++ не накладывает никаких ограничений на поведение программы в случае неопределенного поведения, то как бы логично, что произойти может все, что угодно, поэтому все варианты ответа являются правильными. Еще раз. Никаких ограничений, то есть действительно может произойти ну прямо вообще все, что угодно. Например, вас может атаковать велоцераптор, и это будет допустимым поведением программы. Вы даже не сможете зарепортить баг разработчикам компилятора. В одном из следующих видео мы, кстати, реально посмотрим, когда это происходит. Возникает тогда вопрос: а зачем же тогда в язык вводить такую странную конструкцию, что компилятор может казалось бы съезжать с катушек и делать вообще все, что захочет. Ну, ответ на этот вопрос, как и на многие другие, которые связаны с C++, очень прост: производительность. Дело в том, что неопределенное поведение позволяет улучшить производительность программы, причем двумя различными способами. Во-первых, неопределенное поведение разрешает убирать некоторые накладные расходы, во-вторых, неопределенное поведение разрешает выполнять некоторые оптимизации. И о том, и о другом мы с вами поговорим в следующих видео.