Другие языки программирования и технологии

Почему в С/С++ до сих пор не устранена проблема с выходом массива за границы?

Во первых, потому, что устранить проблему - это уменьшить скорость работы кода.
C/C++ популярны во многом потому, что позволяют писать очень быстро работающий код. И никто не будет лишать эти языки этого преимущества.

Во вторых, в C/C++ нет массивов в том виде, в котором они существуют в других языках программирования. Операция [] - всего лишь синтаксический сахар для адресной арифметики:
a[i] эквивалентно *(a + i) эквивалентно *(i + a) эквивалентно i[a].
И массив в C/C++ - не набор значений известной длины, а лишь указатель на начало массива. Как ты будешь контролировать выход за границы, если не знаешь длину массива?
Дмитрий Lim
Дмитрий Lim
54 751
Лучший ответ
Александр Чепелюк не сложно изменить транслятор и завести поле с границами
"Традиционные" массивы типа a[] это так называемые C-массивы. Наследие C.

Вообще в C++ обычно используют array и vector и итерации над ними. С таким подходом выйти за пределы в ряде случаев "сложнее". Как раз array сделан на замену С-массивам.

Более того при обращении через at выкидываются исключения (пример + обработка исключений)
https://onlinegdb.com/kWHBEGwri

Собственно ссылки передача через ссылки параметров тоже уход от опасных указателей.
Так что не так мало сделано ;)
увеличит размер программного текста, то есть увеличит длительность вычислений.
приняли, что это не будут реализовывать.
Сергей Гузеев
Сергей Гузеев
65 659
Нафига? Это язык для взрослых дядь, тут ещё надо самому следить за памятью.
Уууух, блин, молодежь пошла. Ассемблеров на вас не хватает!
Олег Шол
Олег Шол
8 954
Если надо - используй классы контейнеры. Тож же вектор например.
Самому можно эксэпшэн сделать через try - catch