Delphi中的Free和Nil和freeandnil函数

Posted jijm123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi中的Free和Nil和freeandnil函数相关的知识,希望对你有一定的参考价值。

Delphi中的Free和Nil

在Delphi中释放对象资源时一般用Obj.Free(Obj为一个实例名),不过程Delphi中还有一个FreeAndNil(对象名)函数,那么用哪个好呢?Free和Nil的本质又都是什么呢?

在Delphi中一个对象名只是一个指向该对象的指针,可以有多个指针指向同一个对象地址。Nil是将指针置空,而Free则将指针指向的对象销毁掉。如下所示:

Obj.Free; //将Obj所指向的对象销毁。

Obj:= nil; //将Obj指针置空。如果将上面的一句放在后面,则Free时会报错,因为指针不指向该对象的地址,也不指向任何内存地址。

还有在销毁对象时一定要注意,看还有没有其他指针指向该对象,如果有却销毁掉了,那么其他指针调用该对象时会报错。如果有多个指针指向同一个对象时,不要用FreeAndNil来销毁对象,因为不确定是否还有指针指向该对象,此时只需把不用的指针置空就行了,不过在所有指针都不指向该对象时,一定要记得销毁掉,以释放资源。 
---------------------
作者:云中雁012345
来源:CSDN
原文:https://blog.csdn.net/peixiaobin_blog/article/details/18080559
版权声明:本文为博主原创文章,转载请附上博文链接!

以上是关于Delphi中的Free和Nil和freeandnil函数的主要内容,如果未能解决你的问题,请参考以下文章

delphi7中create(nil)与create(self)区别

Delphi的对象注销方法Destroy和free

delphi窗口的create和free,一个古老的话题

[原创] Delphi Create(Application) 和 Create(nil) 的区别

c 中的引用类型在delphi中如何使用

[原创]Delphi FreeAndNil 是一个过程,并不是函数