Страница 2 из 2

Re: Правильное уничтожение созданных в рантайме объектов?

Добавлено: 14.07.2012 20:50:27
debi12345
А функция Free и так проверяет на NIL перед Destroy

Проблема в другом - при декларации переменной класса она имеет случайное (ненулевое - а значит и валидное для проверки во FREE) значение , правильным (не вызывающим AV/SF) оно становится только в в момент создания объекта. Поэтому, чтобы не иметь дело со случйаным занчением, лучне сразу (до создани объекта) присвоить NIL, ана выходе перед удалнеи объккта - пвоероять на NIL (на признак - создался ли объект). Лично я давно взял эту методику за стандарт в случаях, если возможны сбои при создании объектов.

Re: Правильное уничтожение созданных в рантайме объектов?

Добавлено: 15.07.2012 12:22:06
OberonAR
debi12345 писал(а):
правда на nil не проверял в этот раз.

Почему ?
Никогда не помешает перед созданием экзмепляра объекта присвоить объектной перремнной NIL, а перед освобождением экземпляра - проверить объектную переменную на NIL. Это убережет от фатальных ошибок, связанных с несозданием объекта (если такое возможно в принципе - ошибки в коде создания, нехватка памяти,..).


Спасибо, теперь делаю так. Ошибка ушла после обновления CodeTyphon на версию 2.70, там как раз обновились версии ZEOS. Походу в них и был косяк. Теперь все работает как надо и память не утекает. Всем спасибо за ответы и потраченное время! 73!

Re: Правильное уничтожение созданных в рантайме объектов?

Добавлено: 15.07.2012 13:48:41
debi12345
Спасибо, теперь делаю так.

Не за что :)
ПС:
В принципе, перед созданием экземпляров ГАРАНТИРОВАННО создаваемых классов вроде TStringList - присовение и проверка NIL необязательны.