![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
память освобождается, но вне процедуры:
--------------------
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Это всё, что Вас просили показать?
Удачи Вам. |
|||
|
||||
| uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
последовал совету Dom, вынеся создание стриглистов в событие OnCreate формы а освобождение памяти в событие OnClose. в итоге остались лишь проблемы с памятью, связанные с тем, что RAD studio видимо все переменные типа String приводит к UnicodeString для поддержки юникода.
kami,Dom - спасибо за Ваше время и Ваши нервы, потраченные на решение проблемы. Добавлено @ 19:12 вот нашел обьяснение утечкам памяти:
© http://www.citforum.ru/programming/delphi/unicode/1.shtml Это сообщение отредактировал(а) uwannadie - 4.4.2010, 19:14 --------------------
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Т.е. FastMM продолжает выдавать утечки? В таком случае - проблема решена не полностью. В отлаженном приложении утечек быть не будет. Исключение я знаю только одно - в 9-й версии Indy была проблема с не-высвобождением чего-то из "внутренностей". При использовании стандартных компонент (VT можно отнести к ним) утечек быть не должно. Если есть - проблема в своем коде. Лог после исправления части утечек в студию, пожалуйста. |
|||
|
||||
| uwannadie |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
ругается постоянно на 2 строчки в процедуре
еще ругается на 1 строчку в модуле с реализацией потока
прикрепил лог работы Присоединённый файл ( Кол-во скачиваний: 4 )
UpdateManager_MemoryManager_EventLog.rar 43,17 Kb--------------------
|
||||
|
|||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
В OnFreeNode вместо Finalize(FileData^) поставьте Dispose(FileData). по результатам будем смотреть дальше, но Finalize не предназначено для корректного высвобождения строк.
|
|||
|
||||
| uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
пробовал уже давно, вылезает "Exception: Invalid Pointer Operation"
--------------------
|
|||
|
||||
| kami |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Понятно, ведь New не было вызвано, а они работают только в связке... Сделайте так (в FillTreeviewWithFiles), Dispose оставьте на месте:
Это сообщение отредактировал(а) kami - 4.4.2010, 20:20 |
||||
|
|||||
| uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
все равно вылетает исключение
--------------------
|
|||
|
||||
| Dom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 1 Всего: 4 |
Немного не по теме
Почему, или это исключительно для UnicodeString? В хелпе Д7 написано:
Сам использую эту процедуру, для AnsiString работает корректно, память освобождается, никаких утечек. |
|||
|
||||
| Dom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 1 Всего: 4 |
А теперь по теме.
Может дело все же не в освобождении памяти из-под записей в дереве, если ручное "затирание" строк не устраняет утечек? |
|||
|
||||
| uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
надо еще будет попробовать откомпилить и протестировать в других версиях делфи/бдс, может в компиляторе дело
--------------------
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
По теме и не по теме:
Dom, согласен, туплю. (по поводу высвобождения строк). uwannadie, Dom, Дело действительно не в бобине В итоге - проблема в связках FindFirst>FindNext>FindClose процедуры FillTreeviewWithFiles. Если говорить точнее - то при окончании цикла по директориям не вызывался FindClose, а сразу шел FindFirst по файлам. Ну и + FindClose должен вызываться не всегда, а при успешном вызове FindFirst (гы, справка рулит UPD: то ли лыжи не едут, то ли не пойму - утечки опять появились. Сейчас будем править... Это сообщение отредактировал(а) kami - 4.4.2010, 21:54 |
|||
|
||||
| Dom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 1 Всего: 4 |
Опять же получается "не по теме".
Вот тоже собрал тестовый проект, но по другому случаю - на посмотреть как освобождаются данные из узлов. Получил неожиданный результат. Процедура OnFreeNode вызывается только для тех узлов, которые были видны на форме. И следовательно память из-под узлов которые не были видимы не освобождается. Если прокрутить список узлов до конца, то при вызове Clear освобождаются все узлы, и никаких утечек нет. Э-э-э, в чем подвох? Могу приложить тестовый проект, если требуется. |
|||
|
||||
| Dom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 1 Всего: 4 |
Ага, заглянул в исходники. Чтобы вызвалась OnFreeNode должно выполнится условие
Но при создании не все узлы получают vsInitialized. А вот если после добавления всех узлов вызвать FullExpand, то память освобождается корректно без каких-либо дополнительных манипуляций. Т.е. инициализация происходит для всех узлов в этом случае. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |