Недавно узнал про undefined behavior в C++, прочитав вопрос на SO "Accessing an array out of bounds gives no error, why?"
Пришла в голову мысль:
int arr[2];
bool cycle = true;
int i = 2; //индекс массива который выходит за его пределы
while (cycle){
arr[i] = 1; //рандомное число
i++;
}
может неправильно написал, но суть думаю ясна, тип программа перезаписывает рандомные адресса за пределами массива (как я понял), тип у C/C++ нет ограничетеля на обращение к элементам массива.
Или если зациклить любое другое undefined behavior
Может какой конкретный компилятор не скомпилирует это, но g++ может быть.
Что будет когда этот код запустится? Произойдет run time ошибка или это сломает систему?
У ос есть защита от подобного?