Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: 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 вся ветка

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

Наверх




Память: 0.45 MB
Время: 0.024 c
1-1098740749
Vov
2004-10-26 01:45
2004.11.07
Даты


14-1097978150
Думкин
2004-10-17 05:55
2004.11.07
С днем рождения! 17 октября


1-1098457860
MRAk
2004-10-22 19:11
2004.11.07
Как Добавить картинку в Drawgride в опр ячейку


9-1089041642
Micke
2004-07-05 19:34
2004.11.07
Split Screen с DelphiX


9-1089806682
volser
2004-07-14 16:04
2004.11.07
Изменение разрешения девайса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский