Finalize, процедура

Синтаксис


procedure Finalize(var Buffer):
procedure Finalize(var Buffer; Count: Integer);

Описание

Процедура Finalize очищает строки, динамические массивы, интерфейсы, значения типа Variant, а также записи или массивы, содержащие элементы этих типов. Delphi автоматически очищает переменные строкового, интерфейсного, вариантного типа и динамических массивов, но если память для этих значений была выделена динамически, то до освобождения памяти необходимо выполнить процедуру Finalize.
Для того чтобы очистить более одного элемента массива, передайте количество элементов массива в параметре Count. Count - это количеств элементов массива, а не количество освобождаемых байт памяти.
Finalize не является настоящей процедурой.

Ошибки

Советы и приемы

  • Dispose вызывает Finalize автоматически, поэтому процедуру Finalize необходимо вызывать только при использовании FreeMem.
  • Первый аргумент Finalize - это не указатель, а переменная или разыменованный указатель.
  • Процедура Finalize должна знать тип буфера, чтобы определить, каким образом очистить массив или поля записи. В случае преобразования типа нетипизированного указателя используйте для него правильный тип. Преобразование типов указателей - обычный источник труднообнаруживаемых ошибок.

Пример


type
TSample = record
Str: string;
List: array of Integer;
Intf: IUnknown;
V: Variant;
end;
TSampleArray = array[0..Maxlnt div SizeOf(TSample)-1] of TSample;
PSampleArray = ^TSampleArray;
// Используйте процедуру Initialize для выделения памяти под массив
// TSample.
procedure FreeSamples(Samples: PSampleArray; Count; Integer);
begin
Finalize(Samples^, Count);
FreeMem(Samples);
end;

Смотрите также

Процедуры FreeMem, Initialize.
    Учебник по языку Pascal          Лабораторные работы по программированию          Справочник




Нет комментариев.



Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: