目前Delphi中释放对象资源的方式主要有方法Free和FreeAndNil,对于窗体对象还有Release方法,对于窗体资源(Form)这三者的主要区别如下:
Free是直接释放资源,然后触发OnDestroy事件,但没有将Form指针改为nil
Release 是等待资源不再使用后才释放资源,同样不将Form指针为nil。
FreeAndNil 是将对象资源释放掉并且将指针指向nil。
因此在释放对象资源时,在Destroy中最好使用Release进行资源释放操作,而不用Free;对于局域变量的释放,建议使用FreeAndNil,这样效率会高些,能提高内存的利用率。
另外,由于使用Release或Free方式并没有将Form指针改为nil,因此在判断对象是否创建时不能单用Assigned(Form)方式来判断,还要加上Form = nil 的方式;本人建议在使用Free之后再加上Form := nil;
(PS)对于Variant对象的释放还有VarClear或将var置为Unassigned和nil的方式。