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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.95
ogcjm124
2 / 2 / 0
Регистрация: 31.07.2011
Сообщений: 143
15.10.2011, 21:22     Динамическое выделение памяти #1
Всем здрасти.Если выделять динамически память,например:
C++
1
char *p=new char[20];
и при этом не перегружать оператор new.То верны ли следующие утверждения.
Это динамически выделенная память на самом деле то же самое что
C++
1
char p[100];
т.е.статическая т.к.программа слетает при достаточно большом вводе в этот массив.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aeshes
 Аватар для aeshes
437 / 200 / 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
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
15.10.2011, 21:45     Динамическое выделение памяти #4
если выделять так char *ptr=new char[20]; и больше ничего не делать, то нет
но вообще, при выделении динамической памяти оператором new ее можно же потом перевыделить на больший размер данных, предварительно освободив ее delete
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
15.10.2011, 23:25     Динамическое выделение памяти #5
Уж не знаю, стоит ли об этом упоминать или нет... Динамическое выделение памяти это там, где разрешит система с помощью API-функций, malloc, в частности. Статическое- в стеке, во время компиляции генерится код, который при исполнении и выделит там эту память. В отладчике всё надо смотреть, там очень наглядно.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
15.10.2011, 23:27     Динамическое выделение памяти #6
Цитата Сообщение от ogcjm124 Посмотреть сообщение
Если используются функция realloc программа то не летит!
с++ это std::vector<char> + resize
Yandex
Объявления
15.10.2011, 23:27     Динамическое выделение памяти
Ответ Создать тему
Опции темы

Текущее время: 05:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru