Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.19;
Скачать: CL | DM;

Вниз

memory leak   Найти похожие ветки 

 
Olexander   (2003-10-12 16:43) [0]

Похоже нарвался на субж
Подскажите есть ли тут утечка ?

procedure TPort.ProcessFoundAnswer;
var
PAnswer : ^TAnswer; // некая структура
begin
if (answer_in.Code = command_out.Code) then
case answer_in.Code of
commandUnit.cmdGetADCCodes:
begin
new(PAnswer);
Panswer^ := answer_in;
Inanswerbuff.Add(Panswer); //adding
....

Inanswerbuff : TList

после набора некоторого количества ответов в Inanswerbuff делаю
Inanswerbuff.Clear вне процедуры TPort.ProcessFoundAnswer - хелп говорит что .Clear очищает память занятую под элементы TList.
Так ли это если память я выделил через new для локального указателя PAnswer ??

Спасибо


 
Ломброзо ©   (2003-10-12 20:54) [1]

В TList хранятся нетипизированные указатели, потому как он будет знать, сколько памяти освобож%дать? Конечно же надо пробежаться руками по всем элементам ТЛиста и явно освободить память, да и притом каждый вызов New должен иметь пару Release. При Clear происходит вызов SetCount(0), из него присходит вызов Delete для всех элементов листа, а Delete просто вызывает Move для элементов массива указателей, но явно память, на которую указывает указатель, нигде в TList не освобождается.


 
Olexander   (2003-10-13 17:04) [2]

А если я выделяю память через локальный указатель в процедуре
new(PAnswer);
Panswer^ := answer_in;
Inanswerbuff.Add(Panswer); //adding

А потом вне процедуры очищу все элементы списка
- память освободится корректно ?


 
Reindeer Moss Eater ©   (2003-10-13 17:09) [3]

new(PAnswer);

А где Dispose(PAnswer) ?


 
Olexander   (2003-10-13 18:28) [4]


> new(PAnswer);
>
> А где Dispose(PAnswer) ?


в смысле так:
new(PAnswer);
Panswer^ := answer_in;
Inanswerbuff.Add(Panswer); //adding
Dispose(PAnswer);

а после этого со списком проблем не будет
если сделать Dispose(PAnswer), и на тот же адрес ссылается Item списка ?



Страницы: 1 вся ветка

Текущий архив: 2003.12.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
14-62251
Thor
2003-11-25 00:09
2003.12.19
цифровой диктофон


14-62248
Fredericco
2003-11-15 21:54
2003.12.19
Отчет о разведке NYMMP 2003.


3-61991
buka
2003-11-24 12:12
2003.12.19
Работа в технологии ADO?


3-61914
Илайдж
2003-11-27 13:20
2003.12.19
Результат exec sp_sqlexec @sqlstr...


8-62164
Novenkij
2003-08-22 22:22
2003.12.19
Монохромный JPEG