@DimaIs

Могу присвоить значение не существующему элементу массива и вывести его, в чем проблема?

Решил написать программку, возник какойто вопрос, и я решил кое-что(а именно присвоить несуществующему элементу значение)проверить. В итоге(см. скриншот)я не только смог это сделать, но и даже вывел его!
Это новая фича или кто-то уже решал такую проблему? Заранее выражаю благодарность
0c4d74ed52fc42868dd75e67f8c4f564.png
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
15432
@15432
Системный программист ^_^
Нет, просто вы записали в область памяти за пределами места, выделенного под массив. Это называется buffer overflow и может привести к непредсказуемым последствиям - например, если сразу за массивом выделена другая важная переменная, она может быть перезаписана. Отсутствие проверки ввода пользователя на допустимые границы может быть серьёзной уязвимостью безопасности - локальные переменные выделяются на стеке, в том числе и массивы. Выход за пределы массива позволит перезаписать адрес возврата (который тоже расположен на стеке) и в теории выполнить произвольный код.

С целью предотвращения такого поведения в языках более высокого уровня при каждом присваивании проверяются границы доступной памяти, не позволяя "выстрелить себе в ногу". В C++ такого нет в угоду большей производительности.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы