Delphi中关于资源释放(Free,Relealse,FreeAndNil)

根据日常编程经验,得出一些Delphi中关于资源释放的体会。

假如有对象Obj为TObject类型:

1) Obj.Free直接释放资源后,调用OnDestroy事件,但是没有将Obj指针值置为Nil。

2) Obj.Release 等待资源不再使用后释放资源,同样不修改Obj指针为Nil,所以在OnDestroy中最好使用Release进行资源释放操作。

3) 局部变量释放资源时,可以考虑用FreeAndNil()释放资源,这样效率会高些,能提高内存的利用率。

4) 单纯通过Assigned(Obj)判断对象是否已经创建是不够的,因为如果对象通过Free/Release进行资源释放的话,Obj指向的是一个未知地址, 而非Nil,所以需要用(Not Assigned(Obj)) And (Not (Obj is  TObject)) 来判断该对象是否已经创建在内存中。

原文地址:https://www.cnblogs.com/FuYan/p/3488699.html