Вниз
Скачать: CL | DM;

TList.Free   Найти похожие ветки 

 
edge   (2004-10-22 16:12) [0]


procedure TForm1.FormButton1Click(Sender: TObject);
type
PMyList = ^AList;
AList = record
  I: Integer;
  C: Char;
end;

var
MyList: TList;
ARecord: PMyList;
B: Byte;
Y: Word;

begin
MyList := TList.Create;
try
  New(ARecord);
  ARecord^.I := 100;
  ARecord^.C := "Z";
  MyList.Add(ARecord);
  New(ARecord);
  ARecord^.I := 200;
  ARecord^.C := "X";
  MyList.Add(ARecord);

 for B := 0 to (MyList.Count - 1) do
 begin
   ARecord := MyList.Items[B];
   Dispose(ARecord);
 end;

finally
  MyList.Free;
end;
end;


Пример взят из хелпа. Обязательно ли писать
for B := 0 to (MyList.Count - 1) do
begin
  ARecord := MyList.Items[B];
  Dispose(ARecord);
end;
ведь Free освобождает память и уничтожает указатели. Если обязательно, то можно вместо цикла написать MyList.Clear?


 
begin...end ©   (2004-10-22 16:16) [1]


> Обязательно ли писать

Если хочешь, чтобы память освободилась, - обязательно.

> ведь Free освобождает память и уничтожает указатели

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


 
Digitman ©   (2004-10-22 16:20) [2]


> Free освобождает память и уничтожает указатели


указатели - да, уничтожает.
но TList не делает никаких предположений на счет того, ЧТО конкретно ассоциировано под данным указателем ... ты вполне мог создать объект и записать его адрес в элемент списка, а мог выполнить и Getmem() и New() .. для каждого случая класс TList должен был бы знать , какую из "разрушающих" п/пргограмм он должен был бы вызывать в каждом из конкретных случаев ... НГО ! класс TList хранит ТОЛЬКО адреса, и знать не5 знает, на ЧТО КОНКРЕТНО эти адреса указывают ... поэтому только ты сам волен определять, какую из "разрушающих" п/программ следует вызывать в том или ином конкретном случае



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.023 c
14-1098124208
Petia
2004-10-18 22:30
2004.11.07
Delete!!!


4-1096671072
НовичОк
2004-10-02 02:51
2004.11.07
Заголовки кнопок в другом приложении


1-1098420950
Fynjy1984
2004-10-22 08:55
2004.11.07
Выручайте


1-1098732761
Colonel
2004-10-25 23:32
2004.11.07
Из C в Delphi


1-1098426203
kj
2004-10-22 10:23
2004.11.07
TService.LogMessage()




   Наверх