![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IdPOP31.Retrieve - утечка памяти!! ?? [D7, Win2k]
Gold © (2005-07-06 18:31:00)В цикле выполняется следующия команда
IdPOP31.Retrieve(i,Amsg);
При каждом итерации выделяется память. (отслеживаю по диспетчеру задач)
Память больше не освобождается.
Что делять?
Спасибо
Gold (2005-07-08 10:47:00) [1]Стал в рантайме создавать объект IdPOP31, после обработки уничтожать... Все значительно улучшилось..
Slym (2005-07-08 09:01:00) [2]Медленная но верная фрагментация памяти, и никуда от нее не уйти. Сверни приложение разверни и TaskMan тебя обрадует.
Может какой глюк в Indy, но в TIdMessage наверняк нет, слишком уж заезженый компонент
Gold (2005-07-07 12:27:00) [3]Искал у себя... все заремарил, расходуется память.
Создаю новое приложение. на форму кидаю три компонентна типа
TIdPOP31, TIdMessage1, TButton1
пишу обработчик:
procedure TForm1.Button1Click(Sender: TObject);
const
Host : string = '192.168.0.101' ;
Password : string = '1234';
Port : smallint = 110;
UserId : string = 'a@maiil.ru';
Var
i : INTEGER;
begin
IdPOP31.Host := Host;
IdPOP31.Password := Password;
IdPOP31.Port := Port;
IdPOP31.UserId := UserId ;
IdPOP31.Connect;
for i:=1 to IdPOP31.CheckMessages do
begin
IdMessage1.Clear;
IdPOP31.Retrieve(i,IdMessage1);
END;
end;
При каждом итерации выделяется память. (отслеживаю по диспетчеру задач)
Память больше не освобождается. Как вернуть ее злодейку?
Slym (2005-07-07 09:06:00) [4]В строке - IdPOP31.Retrieve(i,Amsg); мемлика нет...
А в твоем цикле (код которого ты не привел) есть!