Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

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

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aeshes
439 / 202 / 13
Регистрация: 07.10.2011
Сообщений: 462
15.10.2011, 21:26     Динамическое выделение памяти #2
это динамически выделенная память под массив из 20 элементов типа char. естественно, все проверки на то, что программа не выходит за границы массива, возлагаются на программиста
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 программа то не летит!
aeshes
439 / 202 / 13
Регистрация: 07.10.2011
Сообщений: 462
15.10.2011, 21:45     Динамическое выделение памяти #4
если выделять так char *ptr=new char[20]; и больше ничего не делать, то нет
но вообще, при выделении динамической памяти оператором new ее можно же потом перевыделить на больший размер данных, предварительно освободив ее delete
kravam
быдлокодер
1690 / 877 / 44
Регистрация: 04.06.2008
Сообщений: 5,395
15.10.2011, 23:25     Динамическое выделение памяти #5
Уж не знаю, стоит ли об этом упоминать или нет... Динамическое выделение памяти это там, где разрешит система с помощью API-функций, malloc, в частности. Статическое- в стеке, во время компиляции генерится код, который при исполнении и выделит там эту память. В отладчике всё надо смотреть, там очень наглядно.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
15.10.2011, 23:27     Динамическое выделение памяти #6
Цитата Сообщение от ogcjm124 Посмотреть сообщение
Если используются функция realloc программа то не летит!
с++ это std::vector<char> + resize
Yandex
Объявления
15.10.2011, 23:27     Динамическое выделение памяти
Ответ Создать тему
Опции темы

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