Delphi的对象注销方法Destroy和free
当您使用完对象后,您应该及时撤销它,以便把这个对象占用的内存释放出来。您可以通过调用一个注销方法来撤销您的对象,它会释放分配给这个对象的内存。
Delphi的注销方法有两个:Destroy和Free。Delphi建议使用Free,因为它比Destroy更为安全,同时调用Free会生成效率更高的代码。
您可以用下列的语句释放用完的Employee对象:
Employee.Free;
和Create方法一样,Free方法也是TEmployee从TObject中继承过来的。把您的注销放在try…finally程序模块的finally部分,而把对象的程序代码放在try部分是编程的好习惯。这样,即使您的程序代码在使用对象时发生了异常事件,也会确保您为这个对象分配的内存会被释放。
二者的区别是,Destroy 会直接释放对象,而Free会事实检查该对象是否存在,如果对象存在,或者对象不为nil,它才会调用Destroy。因此,程序中应
该尽量使用free来释放对象,这样更加安全一些。(但要注意,free 也不会自动将对象置为nil,所以在调用free之后,最好是再手动将对象置为nil。)
TObject类有一个虚拟的Destroy虚构函数和一个非虚拟的Free函数。Free函数中是调用Destroy的。因此,当我们对任何对象(都是TObject的子类对象)调用 .Free();之后,都会执行 TObject.Free();,它会调用我们所使用的对象的析构函数 Destroy();。这就保证了任何类型的对象都可以正确地被析构
http://blog.csdn.net/zang141588761/article/details/59480978
最新文章
- C#对象序列化与反序列化zz
- DDD 领域驱动设计-看我如何应对业务需求变化,领域模型调整?
- CoreCLR 在 Linux 下编译成功
- Asp.net 实现Session分布式储存(Redis,Mongodb,Mysql等) sessionState Custom
- Datagridview 添加checkbox列,并判断Datagridview 中的checkbox列是否被选中
- Poj(3259),SPFA,判负环
- 获取sde 工作空间 propertys
- iOS实用的小技巧
- C和指针 (pointers on C)——第四章:语句(上)
- css3实现钟表特效
- 传统web和mvc的区别
- vector中的find
- 使用mysql-mmm实现MySQL高可用集群
- 国内不谈java
- 机器学习--kNN算法识别手写字母
- 详解EBS接口开发之供应商导入(补充)--供应商银行账户更新
- RHEL7恢复root密码
- 系统windows版本修改
- python 拷贝文件
- SharePoint 2016 站点注册工作流服务报错