Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
3 / 3 / 3
Регистрация: 06.02.2018
Сообщений: 66
1

Выход за пределы массива

28.06.2018, 13:55. Просмотров 1843. Ответов 4
Метки нет (Все метки)

По мойму нарушение границ массива в c++ не допускается. Это будет выход за пределы массива и попытка записать элемент в какуюто другую область памяти.А эта попытка должно быть выкинута на этапе компиляции. Но мой компилятор и компилятор на cpp.sh компилирует без ошибок. Почему? Вот ссылка http://cpp.sh/66byr
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
 
int main() {
 
    int arr[5];
 
    arr[901] = 777;
 
    std::cout << arr[901] << std::endl;
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2018, 13:55
Ответы с готовыми решениями:

Выход за пределы массива
Где-то здесь происходит выход за пределы массива puti, но я не могу его найти уже второй день....

Выход за пределы массива
Заполняю динамический массив случайными числами и вывожу его на экран. Дебажная куча жалуется на...

Выход за пределы массива
Столкнулся со следующей проблемой. Ввожу по формату: Мой код при выполнении выдаёт ошибку. Выход...

Выход за пределы массива
#include &lt;assert.h&gt; #include &lt;assert.h&gt; #include &lt;string.h&gt; #include &lt;stdint.h&gt; #include...

4
2676 / 1599 / 342
Регистрация: 09.09.2017
Сообщений: 6,575
28.06.2018, 15:01 2
Лучший ответ Сообщение было отмечено Reflevmas как решение

Решение

Цитата Сообщение от Reflevmas Посмотреть сообщение
Выход за пределы массива - C (СИ)
Цитата Сообщение от Reflevmas Посмотреть сообщение
По-моему, (запятая) нарушение границ массива в c++ не допускается
Определитесь, Си или С++
Цитата Сообщение от Reflevmas Посмотреть сообщение
Это будет выход за пределы массива и попытка записать элемент в какуюто другую область памяти.А эта попытка должно быть выкинута на этапе компиляции.
Нет. В С/С++ нет проверки на выход за границы массива. Отчасти для скорости работы, отчасти для упрощения. Отчасти потому что Си - низкоуровневый язык, где частенько используется прямой доступ к памяти и указательная магия.
Ошибка может выскочить если пытаетесь обратиться к памяти, запрещенной на уровне ОС - вот тогда выскочит сигнал SIGSEGV (ошибка обращения к памяти). Этот сигнал, если не отлавливать специально, крашит программу.
1
3 / 3 / 3
Регистрация: 06.02.2018
Сообщений: 66
28.06.2018, 15:25  [ТС] 3
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Определитесь, Си или С++
c++ Я случайно ошибся разделом. Обратился с этим вопросом модеатору думаю он исправит мою ошибку.
0
2676 / 1599 / 342
Регистрация: 09.09.2017
Сообщений: 6,575
28.06.2018, 16:13 4
В любом случае, обычные массивы и в Си и в С++ обрабатываются одинаково. Без проверок на выход за границы. Более того, корректна не только ваша запись, но даже 901[arr] = 777;
0
Эксперт С++
8178 / 3775 / 815
Регистрация: 15.11.2014
Сообщений: 8,585
28.06.2018, 16:38 5
Цитата Сообщение от Reflevmas Посмотреть сообщение
По мойму нарушение границ массива в c++ не допускается.
это только по вашему.

по общемировому - допускается.

Добавлено через 59 секунд
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
корректна не только ваша запись, но даже 901[arr] = 777;
записи, которые содержат UB - не корректны.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2018, 16:38

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выход за пределы массива
в одном из обучающих видео уроков наткнулся на ТАКОЕ. алгоритм sort получает в себя начало и...

Выход за пределы динамического массива
Почему возможна такая операция? int *a = new int; a = 9; cout &lt;&lt; a &lt;&lt; endl; И оно выведет 9,...

Проверка на выход за пределы массива
Есть самый обычный массив int veg; вот так заполняется for (int i = 0; i &lt; 3; i++) { ...

Выход за пределы массива, устранение
Всем, привет! Дано задание: Определить последовательность элементов массива, возрастает,...


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

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

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