社区
语言基础/算法/系统设计
帖子详情
小菜 !!Free Dispose 使用上有什么不同??
phonlee
2003-01-10 03:43:31
object : = class.create;
object.free;
dispose(@object);
两者有什么不同??
...全文
59
4
打赏
收藏
小菜 !!Free Dispose 使用上有什么不同??
object : = class.create; object.free; dispose(@object); 两者有什么不同??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Drate
2003-01-10
打赏
举报
回复
通过跟踪发现,Free的代码如下:
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;
我们再来看Destroy;
destructor TObject.Destroy;
begin
end;
什么也看不到?其实DESTROY是通过汇编来写的,也在SYSTEM的单元中,也就是说,最终还是通过释放这个对象所占用的内存空间来完成的!
而dispose(@object)的功能就不用说了吧,其实这两者没有什么根本上的区别!
但我认为还是用object.free比较好,原因 很简单,它存在有它的理由,毕竟用它可以避免一些异常,还有就是它有错误处理机制
idilent
2003-01-10
打赏
举报
回复
free
GnuSoft
2003-01-10
打赏
举报
回复
dispose:简单的释放object占用的内存,但不能释放object所拥有内部其他的对象。
destroy: 是对象的析购函数。释放对象以及内部的所有其它对象。
free: 在destroy之前作self是否为nil的检查。
所以他最安全,建议对象释放时用free.
singlesword
2003-01-10
打赏
举报
回复
Dispose只是简单地释放object所占的内存,
并不会调用它的析构函数的吧。
这样如果你是简单的object是不会有什么问题,
但是如果你的object里还有别的类型的object的时候,
那就会出现内存泄漏了。
所以要用free,因为它会调用析构。
英语词根单词记忆. 包含大量自己对于词根的理解. 方便大家记忆
使用
.
2021-12-17,9点25======下面...
使用
这个软件的原因是因为,这个软件只要你tab同级的行号的右边就会自动出现一个向下箭头,就可以进行折叠,方便快速找到逻辑层次.#资料来源 考研英语词汇大全词根+词缀记忆法 俞敏洪编著 ...
超全的英语短句汇集
有
不同
意见吗? 25. are you with me? 你们跟上我讲的了吗? 26. have i made myself clear? 我讲明白了吗? 27. could you say it again? 你能再说一遍吗? 28. any questions? 有什么...
net工程师必懂题
1.面向对象的思想主要包括什么? 继承 多态 封装 ● 封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。 ● 继承:子类拥有父类的所有数据和操作。 ● 多态:一个程序中...
一个程序员多年的收藏
程序员珍藏的东西会是什么?呵呵,除了平时写的代码,就是那些百看不厌的电子书了。 昨天很郁闷,我用了5年的移动硬盘,莫名奇妙的坏掉了。里面40G的资料全部报销了。 为了不再重蹈覆辙,我决定把重要的电子书都放到...
bilibili【考研英语词汇】
1、abandon vt.离弃,遗弃,抛弃;放弃。 放纵,放弃 a-否定(前缀)band-布带on 布带不在自己身上,放纵,放弃 band n.条,带;乐队;波段;v.绑扎 一群人绑在一起:乐队,一群 ...在小带子上写的字:slogan...
语言基础/算法/系统设计
16,748
社区成员
33,247
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章