|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите с утечкой памяти
Суть, есть отдельная процедура, которая "выцепляет" отдельные элементы HTML страницы, которая сохранена в файл. Но после каждой ее отработки увеличивается количество занимаемой ОЗУ (Хотя по идее после процедуры все переменные удаляются), код ниже:
Код:
var idoc: IHTMLDocument2; V: OleVariant; HTML,html_str,str,str2: String; i,j,k:integer; Element: mshtml.IHTMLElement; begin AssignFile(f,FileName); reset(f); while not eof(f) do begin readLn(f,str); html:=html+str; end; CloseFile(f); v:=VarArrayCreate([0,0],VarVariant); v[0]:= HTML; idoc:=coHTMLDocument.Create as IHTMLDocument2; idoc.write(PSafeArray(System.TVarData(v).VArray));// Эта строчка и есть утечка памяти end; idoc.clear не помогло, в чем может быть дело? Последний раз редактировалось Admin, 15.11.2022 в 09:47. |
#2
|
|||
|
|||
Не факт, что утечка есть. Просто память может не освобождаться менеджером памяти, поэтому кажется, что утечка есть.
Для начала, в конце добавь строки: Код:
idoc := Nil; VarClear(v); v := Nil; Далее, если Делфи достаточно свежая, то там по умолчанию используется иенеджер FastMM. В нем можно включить отслеживание утечек и, если они есть, при закрытии программы он, менеджер, выведет соотв. сообщение. Для этого в главном модуде добвть секцию инициалищации с установкой соотв. переменной: Код:
initialization ReportMemoryLeaksOnShutdown := True; |
#3
|
|||
|
|||
Код:
v := Nil; Последний раз редактировалось vectorj, 16.11.2022 в 12:36. |
#4
|
|||
|
|||
Цитата:
А-а-а... ну да, там же спец значение, то ли None, то ли VarNone. В принципе, это уже не обязательно, после VarClear, объект создан на стеке, так что при выходе из процедуры будет уничтожен. Что там с репортом от менеджера памяти? |
#5
|
|||
|
|||
Цитата:
Оказалось глюки WIN7, на WIN10 и WIN11 все работает как надо, и репорт от менеджера памяти не всплывает после закрытия приложения. В общем, проблема решена. PS пишу парсер Авито с возможностью отправки в телегу. Пока работает. |
#6
|
|||
|
|||
Скорее не Win7, а компонента от мелкомягких, может быть достаточно обновить IE или еще какую библиотеку. А что, на Win7 менеджер памяти ругается при закрытии программы, а на Win10 нет?
|