Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 29.10.2018, 12:46   #1
ezus
Пользователь
 
Регистрация: 08.05.2009
Сообщений: 58
По умолчанию MS VS-2017 C++ MFC - Как почистить CPtrArray

Добрый день.

Запутался в 2-х соснах.

Есть код
Код:
int foo1( CPtrArray& arr )
{
   int nn = 11;
   for( int i=0: i<nn ; i++ )
   {
      CPtrArray* subarr = new CPtrArray();
      arr.Add(subarr );
   }
   return nn;
}

void foo()
{
   CPtrArray arr;  arr.SetSize(0,1);
   int nn = foo1(arr);
   ///.....///
}
При выходе из foo() массив arr будет уничтожен.
Вопрос: Будут ли выполнены delete на каждый элемент arr, или это должен сделать я?

Спасибо.
ezus вне форума Ответить с цитированием
Старый 29.10.2018, 15:06   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от ezus Посмотреть сообщение
При выходе из foo() массив arr будет уничтожен.
Вопрос: Будут ли выполнены delete на каждый элемент arr, или это должен сделать я?

умный CPtrArray сам позаботится о своих элементах.
_Bers вне форума Ответить с цитированием
Старый 29.10.2018, 16:41   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,172
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
умный CPtrArray сам позаботится о своих элементах
Одна беда - CPtrArray глупый.
Код:
CPtrArray::~CPtrArray()
{
	ASSERT_VALID(this);

	delete[] (BYTE*)m_pData;
}
waleri на форуме Ответить с цитированием
Старый 29.10.2018, 16:49   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

И об этом написано в документации, но кто ее читает...
p51x вне форума Ответить с цитированием
Старый 31.10.2018, 11:40   #5
ezus
Пользователь
 
Регистрация: 08.05.2009
Сообщений: 58
По умолчанию

Спасибо.
Надо понимать, что чистить элементы массива я должен сам?
ezus вне форума Ответить с цитированием
Старый 31.10.2018, 11:41   #6
ezus
Пользователь
 
Регистрация: 08.05.2009
Сообщений: 58
По умолчанию

Прошу прощение за опоздание с реакцией - мы вчера не работали.
ezus вне форума Ответить с цитированием
Старый 31.10.2018, 11:44   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

https://docs.microsoft.com/en-us/cpp...s?view=vs-2017

Цитата:
When a pointer array is deleted, or when its elements are removed, only the pointers are removed, not the entities they reference.
p51x вне форума Ответить с цитированием
Старый 31.10.2018, 12:01   #8
ezus
Пользователь
 
Регистрация: 08.05.2009
Сообщений: 58
По умолчанию

Еще раз спасибо
ezus вне форума Ответить с цитированием
Старый 02.11.2018, 13:48   #9
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Одна беда - CPtrArray глупый.
Код:
CPtrArray::~CPtrArray()
{
	ASSERT_VALID(this);

	delete[] (BYTE*)m_pData;
}
ну и в чем проблема?
_Bers вне форума Ответить с цитированием
Старый 03.11.2018, 01:15   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,172
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
ну и в чем проблема?
Изначальный вопрос перечитайте...
waleri на форуме Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
возможно ли подменить рефер или вовсе почистить его перед тем как подгрузим виджет с другого сайта Predator199 JavaScript, Ajax 12 28.07.2016 16:20
Как почистить диск Е(вопрос от чайника) Markovichkiev Windows 4 13.04.2016 12:14
Как почистить шаблон от мусора в коде. Tonchi HTML и CSS 3 19.03.2012 08:31
как почистить принтер RAVAL)) Железо 3 27.06.2009 17:02
MFC CPtrArray ezus Visual C++ 2 10.05.2009 11:38


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS