![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Указатели на записи [D5, D6, Win95/98, Win2k]
Dvorez © (2002-12-23 05:08:00)Господа, вопрос такой.
Существует указатель на запись следующего вида:
type
PListObject = ^TListObject;
TListObject = record
kod:string[14];
nkod:string[100];
end;
Соответственно переменная этого типа и переменная типа TList:
var
ListObject:PListObject;
ListUs:TList;
В цикле создаем динамическую переменные и вставляем их в лист:
for i:=0 to 20 do
begin
new(ListObject);
ListObject^.kod:="1";
ListObject^.nkod:="2";
ListUs.Insert(i,ListObject);
end;
Ворпрос:
Нужно ли перед завершением работы программы уничтожать эти динамические переменные (dispose(...))? И почему?
Alex Konshin (2002-12-23 06:43:00) [1]Нужно.
TList не пытается как-нибудь понять указатели, которые ему дают.
Соответственно и не пытается их уничтожать (а откуда ему знать, что это?).
Я не знаю, что у тебя за задача, но на мой взгляд динамический массив в данной ситуации более предпочтительный, так как будет меньше обращений к менеджеру памяти и вопрос с уничтожением не стоит. А если ты еще и заранее знаешь размер массива, то лучше просто выделить память одним куском.
Как еще один вариант могу предложить свои дин.масивы объектов, но не уверен, что ты сможешь оценить его преимущества-недостатки, т.к. у тебя возникают вопросы в более простых ситуациях.
http://home.earthlink.net/~akonshin/index.htm
MBo (2002-12-23 06:35:00) [2]Да, нужно - сам выделяешь память, сам и освобождай.