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

Объявление динамического массива указателей - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.90
G-Cat
16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94
18.03.2010, 10:49     Объявление динамического массива указателей #1
как объявить динамический массив указателей?

я знаю что обычный динамический массив записывать, например, так:
C++
1
2
3
...
char *array = new char[ 256 ];
...
а как массив указателей не знаю. Подскажите пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.03.2010, 10:54     Объявление динамического массива указателей #2
G-Cat,
C++
1
2
3
4
5
6
7
8
9
...
char **array = new char* [ number_of_strings ];
for ( int i = 0; i < number_of_strings; ++i )
  array[i] = new char [ length_of_string ];
...
for ( int i = 0; i < number_of_strings; ++i )
  delete [] array[i];
delete [] array;
...
Borkot
 Аватар для Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 182
Записей в блоге: 1
02.08.2012, 16:10     Объявление динамического массива указателей #3
Скажите обязательно удалять массив сначала каждый i элемент,а потом и весь массив?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
02.08.2012, 16:19     Объявление динамического массива указателей #4
Цитата Сообщение от Borkot Посмотреть сообщение
Скажите обязательно удалять массив сначала каждый i элемент,а потом и весь массив?
Да, обязательно. Если просто написать delete [] array; память, выделенная под каждую строку, так и останется как бы занятой, а вот указатель на неё потеряется. При определённом упорстве займёте всю память, выделенную системой вашей программе.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
02.08.2012, 20:40     Объявление динамического массива указателей #5
Но лучше этого никогда не делать.
Borkot
 Аватар для Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 182
Записей в блоге: 1
03.08.2012, 12:00     Объявление динамического массива указателей #6
Погуглив немного и начитавшись книжек, нашел еще такую функцию free().Вопрос delete [] mas всегда взаимозаменяемая free()?Или есть какие-то нюансы?Заранее спасибо.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
03.08.2012, 12:17     Объявление динамического массива указателей #7
Цитата Сообщение от Borkot Посмотреть сообщение
.Вопрос delete [] mas всегда взаимозаменяемая free()?
нет,
память выделенную через new нужно удалять только через delete
память выделенную через new [] нужно удалять только через delete []
память выделенную через malloc/calloc нужно удалять только через free
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.08.2012, 12:29     Объявление динамического массива указателей #8
C++
1
std::vector<myType*> v;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2012, 12:57     Объявление динамического массива указателей
Еще ссылки по теме:

Объявление типов и указателей в C++ C++
C++ Освобождение динамического двумерного массива указателей
Объявление указателей C++

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

Или воспользуйтесь поиском по форуму:
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
03.08.2012, 12:57     Объявление динамического массива указателей #9
C++
1
std::vector< boost::shared_ptr<myType> > v;
Yandex
Объявления
03.08.2012, 12:57     Объявление динамического массива указателей
Ответ Создать тему
Опции темы

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