Моя домашняя страница: http://www.tommstudio.com/
В программировании Delphi мы должны избегать утечек памяти, удаляя все объекты. Однако, если вы не осторожны в программе, легко отменить один и тот же объект несколько раз, что приведет к серьезным ошибкам, что приведет к сбою или даже сбое.
Пожалуйста, смотрите следующую программу:
|
В приведенном выше примере будет сгенерирована ошибка при выполнении к Button3.free, Button2 отменяется при вызове Button2.free, но поскольку Button2 является хостом Button3 и Button3 также отменена одновременно, ошибка неизбежно происходит Полем
Чтобы избежать вышеуказанной ошибки, есть два способа: во -первых, удалите все компоненты, к которым хост находится до его удаления. Этот метод очень прост, просто перенести кнопку2.free и button3.free в приведенном выше примере. Во -вторых, установите переменную Button3 в NIL, прежде чем Button3.free выполнена. Процедура заключается в следующем:
|
В вышеупомянутой программе настройка кнопки3 на NIL предназначено для того, чтобы приложение не использовало память о неопределенном объекте. При вызове метода свободного объекта он определяет, является ли объект нулевой. Связанные методы виртуального объекта Информация о таблице данных. Destry не вносит никаких изменений в адресу памяти, где существуют объекты, поэтому, если вы тестируете адрес памяти после вызова Destroy, он все равно может быть действительным. Таким образом, когда объект дважды вызывается в программе, не настраивая ссылку на объект на NIL, ссылка на объект все равно будет относиться к адресу памяти, занятый объектом, до того, как он был удален, что является причиной ошибки.
Конечно, в реальном процессе разработки большинство ошибок не будут настолько очевидными, и решение должно быть определена в соответствии с спецификами, и проблема не будет решена путем добавления предложения так просто. Здесь я просто объясняю идею программирования, которая играет роль в привлечении нефрита.