object : = class.create;
object.free;
dispose(@object); 两者有什么不同??
object.free;
dispose(@object); 两者有什么不同??
解决方案 »
- 在DELPHI中用unidac连接DB2数据库问题
- 我是新手,有问题请教
- oracale数据库问题,请大家指教!!
- 淘宝API开发有什么好点子?
- 哪里能下载:讲MRP、BOM等详细算法的书或者文章?或者能买到的书(给出书名)也可。
- delphi中并行的问题??(好头疼啊!!,大侠帮忙)
- delphi怎么把xml文件生成html文件了??
- TM-U300A 打印机问题 加急
- 阿水想流到南方去,大家给点意见好吗
- 请教大侠,borland c++同borland builder及DELPHI有何区别?
- 怎样可以拖动图片,就像拖动工具条那样
- 小问题,sql server中的一个数据表te有一个日期型字段da,怎样insert into一条日期记录,日期是以什么格式表示的
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;
我们再来看Destroy;
destructor TObject.Destroy;
begin
end;
什么也看不到?其实DESTROY是通过汇编来写的,也在SYSTEM的单元中,也就是说,最终还是通过释放这个对象所占用的内存空间来完成的!而dispose(@object)的功能就不用说了吧,其实这两者没有什么根本上的区别!但我认为还是用object.free比较好,原因 很简单,它存在有它的理由,毕竟用它可以避免一些异常,还有就是它有错误处理机制
并不会调用它的析构函数的吧。
这样如果你是简单的object是不会有什么问题,
但是如果你的object里还有别的类型的object的时候,
那就会出现内存泄漏了。
所以要用free,因为它会调用析构。
destroy: 是对象的析购函数。释放对象以及内部的所有其它对象。
free: 在destroy之前作self是否为nil的检查。
所以他最安全,建议对象释放时用free.