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

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

Войти
Регистрация
Восстановить пароль
 
behollder
47 / 28 / 8
Регистрация: 23.01.2013
Сообщений: 124
Завершенные тесты: 1
#1

Динамическое выделение памяти - C++

23.01.2013, 09:00. Просмотров 319. Ответов 3
Метки нет (Все метки)

Здраствуйте.
Собственно сам код и вопрос: почему могу свободно выходить за границы массива?
Для чего тогда размерность указывается... Объясните пожалуйста.
C++
1
2
int* foo = new int[4];
cout << foo[5];
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2013, 09:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамическое выделение памяти (C++):

Распределение памяти. Динамическое выделение памяти - C++
an-1 an-2 ... a2

Динамическое выделение памяти - C++
Выполнить задание используя динамическое выделение памяти: Данная целочисленная прямоугольная матрица. Определить: -количество строк,...

Динамическое выделение памяти. - C++
Доброго времени суток. Помогите, пожалуйста, решить задачу. Задача тривиальна - поиск и замена подстроки. Суть в чем: необходимо...

Динамическое выделение памяти - C++
Добрый день! пытаюсь освоить С++ и дошёл до раздела динамического выделения памяти. Беру пример с сайта cppstudio.com всё работает ...

Динамическое выделение памяти - C++
есть код: int u = 0; char* mstrcat(char *str1, char *str2) { u = sizeof(str1); // *str1 = new char; char *res = str1; ...

Динамическое выделение памяти! - C++
Программа должна читать с клавы число и имя(до 15 символов). Данные должны вводится в одной функции а выводится во второй. Сохранять данные...

3
MrGluck
Модератор
Эксперт CЭксперт С++
7498 / 4614 / 694
Регистрация: 29.11.2010
Сообщений: 12,631
23.01.2013, 09:22 #2
greenlight, С++ такой язык, которому не свойственно поведение виндус с расспросами "А вы точно уверены?" Он предоставляет полную свободу программисту, даже позволяя выстрелить себе в ногу. Выход за рамки массива не контролируется.
Если так нужно прослеживать, то метод at stl контейнеров кидает исключение.
1
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
23.01.2013, 15:14 #3
Цитата Сообщение от greenlight Посмотреть сообщение
Для чего тогда размерность указывается...
Чтобы запросить у системы необходимое количество памяти. Если система найдет такой свободный объем памяти, то память резервируется для запросившего приложения до тех пор, пока данную память не освободят.

Добавлено через 1 минуту
Цитата Сообщение от greenlight Посмотреть сообщение
Собственно сам код и вопрос: почему могу свободно выходить за границы массива?
Как уже написал MrGluck выход за пределы не контролируется на уровне языка.
1
SeaMonster
15 / 15 / 0
Регистрация: 31.12.2012
Сообщений: 101
23.01.2013, 16:04 #4
Ну да, c++ а особенно чистый Си - идеальный язык для "создания бомб". Скажем если написать
if(x=2){ тото делать} то это скомпилится, вот только он мигом Присвоит иксу указанное значение и код будет работать совсем не так как ожидалось. ( на всякий случай - правильно if(x==2){ тото делать} ДВА ЗНАКА равно )

Кстати. В том что ты написал как пример
C++
1
2
int* foo = new int[4];
cout << foo[5];
Выход будет и если написать foo[4]! Си - "нулевой" язык, и запись int[4] создает ячейки с номерами от НУЛЯ до ТРЕХ, а не от одного до четырех (как на некоторых языках)
0
23.01.2013, 16:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2013, 16:04
Привет! Вот еще темы с ответами:

Динамическое выделение памяти - C++
Имеется: #define Index 1000 typedef int BaseType; typedef BaseType TMemList; typedef unsigned ptrel; typedef struct List...

Динамическое выделение памяти - C++
Первый раз столкнулся с такой задачей... Дали лабораторную работу: Разработать приложения, реализующее следующие функции: 1) Выделяет...

Динамическое выделение памяти new - C++
Доброго времени. У меня в программе есть два двумерных динамических массива. Код компилируется, но возникает ошибка времени выполнения:...

динамическое выделение памяти - C++
дана целочисленная прямоугольная матрица. определить: 1) количество строк, не содержащих ни одного нулевого элемента; 2) максимальное...


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

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

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