Удаление динамических объектов
Также, как и обычные записи Паскаля, размещаемые в динами- чески распределяемой области памяти, объекты могут удаляться про- цедурой Disрose, если они больше не нужны:
Disрose (P);
Однако, при избавлении от ненужного объекта может понадо- биться нечто большее, чем простое освобождение занимаемой им ди- намической памяти. Объект может содержать указатели на динамичес- кие структуры или объекты, которые нужно освободить или очистить в определенном порядке, особенно если вы оперируете сложной дина- мической структурой данных. Что бы ни нужно было сделать для очистки динамического объекта в каком-либо порядке, это все долж- но быть объединено в один метод таким образом, чтобы объект мог быть уничтожен с помощью одного вызова метода:
MyComрlexObject.Done;
Метод Done должен инкапсулировать все детали очистки своего объекта, а также всех структур данных и вложенных объектов.
Примечание: Мы советуем использовать для удаления ме- тодов, работающих с объектами, которые более не нужны, ис- пользовать идентификатор Done.
Допустимо и часто бывает полезно определять несколько мето- дов очистки для данного типа объекта. В зависимости от того, как они размещены или используются, или в зависимости от состояния и режима объекта на момент очистки, сложные объекты могут потребо- вать очистки несколькими различными путями