Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nikcharn
71 / 53 / 3
Регистрация: 31.07.2009
Сообщений: 149
#1

"Неопределенное поведение" при выходе вводимых данных за пределы массива - C++

20.11.2013, 04:22. Просмотров 295. Ответов 6
Метки нет (Все метки)

В условии задачи написано, что функция не проверяет индексы. И если введенные пользователем входные данные будут выходить за пределы массива, то поведение не определено.

Это означает, что я не должен проверять на корректность введенных пользователем данных? А там компилятор, что выдаст, то и выдаст?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2013, 04:22     "Неопределенное поведение" при выходе вводимых данных за пределы массива
Посмотрите здесь:

Создание массива, неопределенное поведение - C++
Пишу такой код: #include <iostream> #include <stdlib.h> using namespace std; struct GL{ GL () { } virtual...

Почему работает программа при выходе за пределы массива? - C++
Добрый день, возникла проблема. Я задал одномерный массив из 10 элементов, однако, когда в я цикле пытаюсь присвоить значения большему...

Неопределенное поведение при приведении типа - C++
Суть проблемы в том что, после принудительного приведения типа деструктор наследника не вызывается, вызывается деструктор базового типа.Но...

Странное поведение при работе со строками: почему программа выводит 8, если в input "МАКС"? - C++
Почему программа выводит 8, если в input: "МАКС"? #include <iostream> #include <string> #include <string.h> using namespace...

Ошибка о выходе за пределы массива - C++
При изменении условия s>1 на s>0 ошибка о выходе за пределы массива. как исправить? #include <iostream> #include <vector> using...

Неопределенное поведение С++ - C++
Вот такой вопрос: что из этого обязательно вызовет неопределенное поведение ? 1) Разыменование нулевого указателя 2) Выход за...

Неопределенное поведение пользовательской функции - C++
значит писал для лабы вот такой код: town.h #include <Windows.h> #include <conio.h> #include <iostream> #include <fstream> ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
katsidelin
60 / 21 / 2
Регистрация: 15.11.2013
Сообщений: 112
Записей в блоге: 3
20.11.2013, 05:44     "Неопределенное поведение" при выходе вводимых данных за пределы массива #2
Компилятор тут не при чём.
Выдаст программа или оболочка (командный интерпертатор) сообщение об ошибке (в лучшем случае) или программа (а может быть и ОС) зависнет. А что именно из сего произойдёт "не предопределено".
takeneo
3 / 3 / 3
Регистрация: 16.08.2013
Сообщений: 22
20.11.2013, 05:48     "Неопределенное поведение" при выходе вводимых данных за пределы массива #3
Не знаю кто конкретно это делает компилятор или ос, но когда много ошибок вылезает segmentation error.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
20.11.2013, 11:26     "Неопределенное поведение" при выходе вводимых данных за пределы массива #4
Nikcharn, Именно так.
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
20.11.2013, 11:43     "Неопределенное поведение" при выходе вводимых данных за пределы массива #5
Цитата Сообщение от Nikcharn Посмотреть сообщение
Это означает, что я не должен проверять на корректность введенных пользователем данных? А там компилятор, что выдаст, то и выдаст?
Да не нада проверять просто исключение вылови, если вылетит за пределы и обработай try{}catch(...){} .
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.11.2013, 11:51     "Неопределенное поведение" при выходе вводимых данных за пределы массива #6
Цитата Сообщение от ninja2 Посмотреть сообщение
просто исключение вылови
Исключение можно поймать, если оно вообще было. Для обычного массива никаких исключений не генерируется при выходе за пределы. Да и для контейнерных классов только в вариантах с at().
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2013, 11:51     "Неопределенное поведение" при выходе вводимых данных за пределы массива
Еще ссылки по теме:

Неопределенное поведение в Debug и Release - C++
Писал программу для сложения больших чисел (в файле содержатся числа с количеством цифр от 1 до 30). При запуске через компилятор всё...

Упорядочивание "пузырьком" массивов, вводимых пользователем - C++
Всем доброго времени суток. Недавно перешел с Pascal на С++. Все нервы убил на этот C++, делаю задание: 10 массивов, которые вводит...

Не могу вывести "функции" за пределы главной программы - C++
#include<iostream> #include<cmath> #include<iomanip> using namespace std; int main() { setlocale(0, ""); float...

Структура данных "Очередь" на базе массива - C++
Всем привет, помогите пожалуйста реализовать структуру данных ОЧЕРЕДЬ на базе массива для хранения символьных данных, заранее благодарен

Необычное поведение или "Купи слона" - C++
Написал простенькую программку на С++, которая настойчиво просит купить слона, пока не получит ответ "ok", "fine" или "yes". #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
20.11.2013, 11:51     "Неопределенное поведение" при выходе вводимых данных за пределы массива #7
Цитата Сообщение от ninja2 Посмотреть сообщение
Да не нада проверять просто исключение вылови
Выход за пределы вызовет падение программы или порчу данных, либо еще что-то, а не исключение!
Yandex
Объявления
20.11.2013, 11:51     "Неопределенное поведение" при выходе вводимых данных за пределы массива
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru