Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.011 c
14-62272
наблюдатель
2003-11-24 19:15
2003.12.19
TimeStoper


3-61946
Евгений
2003-11-26 10:51
2003.12.19
Использование DLL для коннекта с БД


1-62155
Дельфи
2003-12-05 16:33
2003.12.19
Как сделать подсветку кнопки на панели задач?


14-62228
panov
2003-11-25 23:08
2003.12.19
Кошмарная подборка книг... жуть просто.


3-61953
Noir
2003-11-25 18:34
2003.12.19
Проблеммы с запросом ADOQuery с параметрами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский