Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> указатель на массив указателей 
V
    Опции темы
lv151
Дата 9.4.2011, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



VS2008
Код


int* int1 = new int;
*int1 = 444;

int* int2 = new int;
*int2 = 555;
    

int* mas[100];
mas[0] = int1;
mas[1] = int2;

delete[] *mas;


почему не удаляется int2? Подобный пример нашёл в книге Троелсена "Модель COM и применение ATL". стр.71.

Это сообщение отредактировал(а) lv151 - 9.4.2011, 12:27
PM MAIL   Вверх
borisbn
Дата 9.4.2011, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(lv151 @  9.4.2011,  12:20 Найти цитируемый пост)
delete[] *mas;

ты удаляешь память на которую указывает первый (вернее нулевой) элемент mas
*mas - это то же самое, что mas[ 0 ]
и еще, [] в данном случае не нужны, т.к. память выделялась не под массив int, а под 1 int

Цитата(lv151 @  9.4.2011,  12:20 Найти цитируемый пост)
int* int1 = new int;


одним delete всю выделенную память не удалишь.
есть такое правило - сколько new, столько же и delete


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
bsa
Дата 9.4.2011, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



lv151, а какое отношение имеет к этому char?
PM   Вверх
lv151
Дата 9.4.2011, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



Цитата(borisbn @  9.4.2011,  12:45 Найти цитируемый пост)
и еще, [] в данном случае не нужны, т.к. память выделялась не под массив int, а под 1 int

так массив указателей на int.

char* str = new char[10];
delete[] str; 

Цитата

lv151, а какое отношение имеет к этому char? 

Думал с char-ом сделать.

Это сообщение отредактировал(а) lv151 - 9.4.2011, 14:18
PM MAIL   Вверх
borisbn
Дата 9.4.2011, 14:20 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(lv151 @  9.4.2011,  14:15 Найти цитируемый пост)
так массив указателей int.

если бы ты делал так
Код

int* int1 = new int[ 42 ];

то тогда мог бы ( и должен был бы ) удалять так
Код

delete [] int1;
//или
delete [] mas[ 0 ];  //   /
//или               //  {  это - одно и то же
delete [] *mas;     //   \


Это сообщение отредактировал(а) borisbn - 9.4.2011, 14:21


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
lv151
Дата 9.4.2011, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



Ясно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.