Уничтожение объекта

По окончании использования экземпляра объекта следует освободить выделенную для него память с помощью метода Free. Этот метод сначала проверяет, не равен ли экземпляр объекта значению Nil, и затем вызывает деструктор (destructor) объекта – метод Destroy.

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

FooObject.Free;

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

Кроме этого, запомните еще один совет: никогда не используйте непосредственный вызов метода Destroy. Более безопасно и корректно вызвать метод Free.

В Object Pascal все экземпляры объекта – динамические, и программист должен удалять их сам. Необходимо уничтожать и все, что было создано в программе. Исключением из этого правила являются объекты, принадлежащие другим объектам. Этот тип объектов уничтожается автоматически. Еще одним исключением являются объекты с управляемым временем жизни, имеющие собственный счетчик ссылок (например, производные от классов TInterfacedObject или TComObject), которые автоматически удаляются после ликвидации последней ссылки на них.

Также необходимо понимать, что нет необходимости всегда объявлять и описывать конструкторы и деструкторы. Ведь все классы языка Object Pascal неявно наследуют функциональные возможности базового класса TObject, причем, независимо от того, указано ли это наследование явно или нет. Например, следующее объявление:

type TFoo = class;

полностью эквивалентно объявлению класса:

type TFoo = class(TObject);

#11 CS:GO: \


Читать еще…

Понравилась статья? Поделиться с друзьями: