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

Вниз

Является ли корректным такое освобождение памяти   Найти похожие ветки 

 
Андрусь ©   (2003-04-03 10:59) [0]

Привет всем!Есть такой код:

i:=0;
While i<AList.Count Do
With PRMyRec(AList[i])^ Do
If DisposeMyRec(MyRecItem) Then Begin
Dispose(AList[i]);
AList.Delete(i);
End
Else inc(i);

Является ли корректным освобождение памяти таким образом,когда распакованный указатель исчо не покинул область видимости.


 
Skier ©   (2003-04-03 11:11) [1]

>Андрусь
Является, т.к. после Dispose(AList[i]) ты видимо (?)
с AList[i] уже ничего не делаешь.


 
Palladin ©   (2003-04-03 11:17) [2]

если компилируется и работает, то корректно, а вот полностью ли память освобождается сказать нельзя, ибо не приведены описания структур....


 
Андрусь ©   (2003-04-03 11:32) [3]

>Skier
Да не делаю.
Тогда исчо вопрос:как Dispose просекает размер освобождаемой пямяти,ведь в TList - нетипизированные указатели. Не надоли дописать приведение типов при вызове Dispose:
Dispose(PRMyRec(AList[i]))?


 
Skier ©   (2003-04-03 11:39) [4]

>Андрусь

> Не надоли дописать приведение типов при вызове Dispose:

Не надо.
Менеджер памяти Delphi "следит" за тем сколько он
выделил памяти под структуру.

Но самое главное здесь то что Dispose должна работать
в "связке" с New.

И ещё : про Менеджер памяти Delphi была отличная статья
Андрея Мистика в RSDN-e за 02.02


 
Андрусь ©   (2003-04-03 11:56) [5]

>Skier
А в инете её нет?


 
Skier ©   (2003-04-03 12:00) [6]

www.rsdn.ru :)


 
Андрусь ©   (2003-04-03 12:19) [7]

>Skier
В том-то и дела,что там нет - только анонс.


 
Skier ©   (2003-04-03 12:25) [8]

Эх, молодёжжжжжжжж...:)
http://www.rsdn.ru/
дальше так :

В правом окне открываем узелки дерева (последовательно)
- RSDN Magazine - 2002 - #2 - Менеджер памяти Delphi
В левом окне появляется статья

Удачи ! :))


 
kravchuk ©   (2003-04-03 12:32) [9]

http://www.rsdn.ru/article/default.asp?Delphi/memmanager.xml


 
Alexander1966 ©   (2003-04-03 13:06) [10]

Обычно делают так:

new(myRecord);
Alist.Add(myRecord);
................
................
myRecord:=AList[i];
Dispose(myRecord);



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

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

Наверх




Память: 0.49 MB
Время: 0.021 c
4-44522
Кен
2003-02-13 02:23
2003.04.14
Как получить список всех ресурсов которые я добавляю в программу?


8-44278
MRB_SPB
2003-01-08 13:25
2003.04.14
Громкость


14-44353
Карлосон
2003-03-30 23:17
2003.04.14
Hello Programist А можно ли перевести Дату в числовой тип данных


7-44478
Dr Zlo
2003-02-19 21:59
2003.04.14
Как считывать данные со звуковой карты и обратно писать?


6-44286
Arkady
2003-02-18 10:21
2003.04.14
Перехват Socket