|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.09.2011, 15:07 | #1 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
Уничтожает ли Tlist.free объекты, на которые ссылается?
Всем доброго времени суток.
Запутался. У меня есть класс, унаследованный от Tlist. Насколько я понимаю, он хранит ссылки на объекты. Как я добавляю объекты: item := TSomeClass.Create; List.Add(Item); А в деструкторе класса, унаследованного от Tlist, уничтожаю каждый объект. С другой стороны, я попробовал не использовать свой деструктор и никаких утечек памяти не было. Я сделал вывод, что Tlist при своем уничтожении сам уничтожает объекты. Потом я решил в свой Tlist копировать кое-какие элементы (ну а точнее ссылки на объекты) из другого Tlist. Так вот, после уничтожения другого Tlist, не основного, объекты, хранимые в главном Tlist остаются жить. Как это можно объяснить? Какова же все-таки логика работы Tlist? Как правильно его уничтожать? Заранее благодарен. |
02.09.2011, 15:19 | #2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
TList хранит указатели, и не освобождает их. Всё остальное от лукавого.
> никаких утечек памяти не было как проверяли? > в деструкторе класса, унаследованного от Tlist, уничтожаю каждый объект гораздо лучше перекрыть TList.Notify();
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
02.09.2011, 16:13 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а почему не TObjectList взяли за основу?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
02.09.2011, 16:20 | #4 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
Утечки проверял, добавив еще до создания форм:
Код:
Код:
Зы: Д2010 Последний раз редактировалось Anfall; 02.09.2011 в 17:18. |
02.09.2011, 21:51 | #5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Anfall,
TObjectList наследник TList. Особой разницы я не нашёл. Ну разве что TObjectList сам освобождает все добавоенные в него обьекты в своём деструкторе. ДОБАВИЛ Сам класс находится в Contnrs Единственно что подскажу, это решение проблемы с тем что код: Код:
По этому делай так: Код:
Последний раз редактировалось Человек_Борща; 02.09.2011 в 23:58. |
03.09.2011, 00:50 | #6 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
03.09.2011, 20:04 | #7 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
Человек_Борща, спасибо, посмотрю.
GunSmoker, Спасибо. Не совсем понял. Объекты - это объекты моего класса, который ни от чего не унаследован. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как програмно узнать имя файла на который ссылается ярлык | assch | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 05.06.2011 23:22 |
Архиватор WinRar медленно уничтожает мой компьютер... | ололошенько | Свободное общение | 7 | 03.10.2010 23:41 |
Как найти куда ссылается форма | kakawkin | HTML и CSS | 5 | 04.06.2010 13:34 |
а free pascal не читает задачи которые написаны на turbo pascal? | demonara | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 25.05.2009 16:28 |
запрос ссылается на несвязанный с ним запрос | kolebatel | SQL, базы данных | 0 | 11.06.2008 12:50 |