Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Это означает, что я не должен проверять на корректность введенных пользователем данных? А там компилятор, что выдаст, то и выдаст?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2013, 04:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос "Неопределенное поведение" при выходе вводимых данных за пределы массива (C++):

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

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

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

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

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

6
katsidelin
60 / 21 / 2
Регистрация: 15.11.2013
Сообщений: 112
Записей в блоге: 3
20.11.2013, 05:44 #2
Компилятор тут не при чём.
Выдаст программа или оболочка (командный интерпертатор) сообщение об ошибке (в лучшем случае) или программа (а может быть и ОС) зависнет. А что именно из сего произойдёт "не предопределено".
1
takeneo
3 / 3 / 3
Регистрация: 16.08.2013
Сообщений: 22
20.11.2013, 05:48 #3
Не знаю кто конкретно это делает компилятор или ос, но когда много ошибок вылезает segmentation error.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
20.11.2013, 11:26 #4
Nikcharn, Именно так.
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
20.11.2013, 11:43 #5
Цитата Сообщение от Nikcharn Посмотреть сообщение
Это означает, что я не должен проверять на корректность введенных пользователем данных? А там компилятор, что выдаст, то и выдаст?
Да не нада проверять просто исключение вылови, если вылетит за пределы и обработай try{}catch(...){} .
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.11.2013, 11:51 #6
Цитата Сообщение от ninja2 Посмотреть сообщение
просто исключение вылови
Исключение можно поймать, если оно вообще было. Для обычного массива никаких исключений не генерируется при выходе за пределы. Да и для контейнерных классов только в вариантах с at().
1
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
20.11.2013, 11:51 #7
Цитата Сообщение от ninja2 Посмотреть сообщение
Да не нада проверять просто исключение вылови
Выход за пределы вызовет падение программы или порчу данных, либо еще что-то, а не исключение!
2
20.11.2013, 11:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2013, 11:51
Привет! Вот еще темы с ответами:

Что Вы понимаете под "абстрактным типом", "абстракцией данных" и "абстрактными операциями"? - C++
А давайте займёмся археологией! И проследим как менялся смысл понятий "абстрактный тип данных", "абстракция данных" и "абстрактные...

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

Необработанное исключение в "0x778e15de" в "dir-3.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000" - C++
#include <windows.h> #include <d3d9.h> LRESULT __stdcall WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); struct...

Необработанное исключение в "0x775e15de" в "laba3.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfdfdfdf9". - C++
вылезает ошибка Необработанное исключение в "0x775e15de" в "laba3.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfdfdfdf9". ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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