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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нужно ли удалять объкты в list, STL 
V
    Опции темы
devmstr
Дата 24.11.2007, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


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

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



Есть лист содержащий объекты.
Нужно ли перед удалением листа, освобождать память которая выделялась под объекты.
Еx:
Код

list<QPoint> lst;

QPoint* pnt = new QPoint(1, 1);
lst.push_back(*pnt);

pnt = new QPoint(5, 6);
lst.push_back(*pnt);


Мне кажется что нужно, но во всех примерах которые я встречал это не делается. Как правильно?




--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
Greeen
Дата 24.11.2007, 21:04 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 18



Если решил хранить именно объекты то добавляй так
Код

list<QPoint> lst;
lst.push_back(QPoint(1, 1));

Если хочешь хранить указатели, то либо чистить память перед уничтожением контейнера, либо юзать умные указатели типа boost::shared_ptr


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Alek86
Дата 24.11.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

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



Цитата(devmstr @  24.11.2007,  20:52 Найти цитируемый пост)
во всех примерах которые я встречал это не делается.


и правильно делается, что не делается
в твоем примере в список КОПИРУЕТСЯ содержимое pnt, а сам он должен после push_back "очищаться" delete'ом.

но все же лучше сделай так, как подсказал Greeen


--------------------
user posted image    user posted image
PM MAIL   Вверх
archimed7592
Дата 24.11.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(devmstr @  24.11.2007,  20:52 Найти цитируемый пост)
Мне кажется что нужно, но во всех примерах которые я встречал это не делается.

Что за примеры такие? smile

Как уже сказал Greeen, смысла выделять память динамически в данном случае нет.

Добавлено через 1 минуту и 54 секунды
Alek86, а кто будет делать это?
Код
list<QPoint> lst;
QPoint* pnt = new QPoint(1, 1);
lst.push_back(*pnt);
delete pnt; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
pnt = new QPoint(5, 6);
lst.push_back(*pnt);
delete pnt; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Или без этого уже "правильно делается"? smile


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Alek86
Дата 24.11.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

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



не понял...

archimed7592, я ж то же самое и сказал


--------------------
user posted image    user posted image
PM MAIL   Вверх
archimed7592
Дата 24.11.2007, 21:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Alek86 @  24.11.2007,  21:14 Найти цитируемый пост)
archimed7592, я ж то же самое и сказал 

Возможно у меня плохо с логикой, но вот эти слова:
Цитата(Alek86 @  24.11.2007,  21:09 Найти цитируемый пост)
а сам он должен после push_back "очищаться" delete'ом.
я воспринял, как "он [контейнер list] должен сам очищать созданные динамически контейнеры".
Прошу прощения, если я понял неправильно...




--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Alek86
Дата 24.11.2007, 21:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

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



Цитата(Alek86 @  24.11.2007,  21:09 Найти цитируемый пост)
во всех примерах которые я встречал это не делается.

как я понял, тут написано про очищение перед удалением листа. то есть что-то типа

Код

BOOST_FOREACH(QPoint& p, lst) {
    delete &p;
}



--------------------
user posted image    user posted image
PM MAIL   Вверх
devmstr
Дата 24.11.2007, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


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

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



Просто я уже получаю ссылки с другого кода, точнее библиотеки...
Ок. Суть проблемы понял. Всем спасибо!


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
Alek86
Дата 24.11.2007, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

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



Цитата(archimed7592 @  24.11.2007,  21:18 Найти цитируемый пост)
Прошу прощения, если я понял неправильно...

прощаю smile

я имел в виду pnt


перечитал, и правда нечетко выразился...

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


--------------------
user posted image    user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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