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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.95
ogcjm124
2 / 2 / 0
Регистрация: 31.07.2011
Сообщений: 143
#1

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

15.10.2011, 21:22. Просмотров 3138. Ответов 5
Метки нет (Все метки)

Всем здрасти.Если выделять динамически память,например:
C++
1
char *p=new char[20];
и при этом не перегружать оператор new.То верны ли следующие утверждения.
Это динамически выделенная память на самом деле то же самое что
C++
1
char p[100];
т.е.статическая т.к.программа слетает при достаточно большом вводе в этот массив.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2011, 21:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамическое выделение памяти (C++):

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

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

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

Динамическое выделение памяти - C++
Почему распечатка матрицы Matr1 в f2 дает матрицу из ед., а в f1 матрицу из нулей? Ведь адрес первого эл. массива Matr2 сохранен в...

Динамическое выделение памяти - C++
создать динамический масив, создать функцию, которая сумирует все елементы масива, и функцию, которая печатает содержимое масива и...

Динамическое выделение памяти - C++
Вот у меня есть 2 примера: char* str = "Немыслимый текст"; char* s = new char ; Тут указатель s будет указывать на блок в...

5
aeshes
442 / 205 / 13
Регистрация: 07.10.2011
Сообщений: 462
15.10.2011, 21:26 #2
это динамически выделенная память под массив из 20 элементов типа char. естественно, все проверки на то, что программа не выходит за границы массива, возлагаются на программиста
0
ogcjm124
2 / 2 / 0
Регистрация: 31.07.2011
Сообщений: 143
15.10.2011, 21:42  [ТС] #3
Это то понятно.Ну например было получено задание реализовать программу которая бы выполняла конкатенацию строк.
И вы объявляете эти массивы так:

C++
1
2
char *ptr=new char[20];
chat *str=new char[20];
На сегодняшний день наприме вам хватает массивов такого размера.А завтра вам понадобятся в 1000 раз больше и вам придётся изменять код программы.Поэтому если я правильно понимаю надо выделять память динамически.
И вот основной вопрос:отличается ли динамически выделенная память,если в ней не используются функцию realloc или перегрузка оператора new от памяти выделенной таким образом:
C++
1
2
char ptr[20];
char str[20];
Добавлено через 41 секунду
Если используются функция realloc программа то не летит!

Добавлено через 14 секунд
Если используются функция realloc программа то не летит!
0
aeshes
442 / 205 / 13
Регистрация: 07.10.2011
Сообщений: 462
15.10.2011, 21:45 #4
если выделять так char *ptr=new char[20]; и больше ничего не делать, то нет
но вообще, при выделении динамической памяти оператором new ее можно же потом перевыделить на больший размер данных, предварительно освободив ее delete
0
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,508
15.10.2011, 23:25 #5
Уж не знаю, стоит ли об этом упоминать или нет... Динамическое выделение памяти это там, где разрешит система с помощью API-функций, malloc, в частности. Статическое- в стеке, во время компиляции генерится код, который при исполнении и выделит там эту память. В отладчике всё надо смотреть, там очень наглядно.
0
alex_x_x
бжни
2451 / 1656 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
15.10.2011, 23:27 #6
Цитата Сообщение от ogcjm124 Посмотреть сообщение
Если используются функция realloc программа то не летит!
с++ это std::vector<char> + resize
0
15.10.2011, 23:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2011, 23:27
Привет! Вот еще темы с ответами:

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

Динамическое выделение памяти - C++
Здравствуйте, у меня вопросик такой: почему при &quot;динамическом выделении памяти в строку&quot; у меня вылетает программа!? а при обычном...

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

Динамическое выделение памяти - C++
У меня есть двумерный булевый квадратный массив. После запуска программы, я получаю переменную size, это то, сколько элементов должно быть...


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

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

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