{
Автор: David S. Becker (dsb@plaza.ds.adp.com)
Дата: 1/27/97
Авторские права: Нет
Дистрибутивные права: Свободные, неограниченное использование, в
случае любых изменений кода
с вашей стороны или наличия каких-либо замечаний или предложений
пришлите их пожалуйста мне.
Данный модуль создавался для помощи в управлении указателями и
объектами. Так как
компилятор не инициализирует указатели и объекты в nil и не
сбрасывает
их в nil при освобождении, существует вероятность применения
неактуального
указателя. По этой причине я рекомендую добавление секции
'initialization'
во все модули и вызове Nilify() для всех указателей/объектов в
данном модуле.
Это позволит быть уверенным, что все указатели/объекты стартуют
как nil.
Кроме того, вместо стандартных аналогов, вы можете использовать
NilFree
(для объектов), NilDispose (для указателей, создаваемых с помощью
New),
и NilFreeMem (для указателей, создаваемых с помощью GetMem). Эти
процедуры
безопасны при вызове nil-вых указателей/объектов, так как перед
выполнением
любых действий они проверяют их на nil. После освобождения
распределенной
указателем/объектом памяти они сбрасываются в nil. Строгое
соблюдение функций
модуля значительно снижает риск использования неактуального
указателя.
(Конечно, вы еще можете получить неактуальные указатели из VCL,
т.к.
они, естественно, не используют данные
функции.)
}