为了账号安全,请及时绑定邮箱和手机立即绑定

Delphi关于析构函数destroy的用法?

Delphi关于析构函数destroy的用法?

蝴蝶不菲 2019-02-06 10:07:25
destructor TMan.destroy; {从祖先继承一个析构函数}begininherited destroy; end;然后在用AMan:= TMan.create;创建对象执行AMan.destroy;会出现什么情况?此时AMan被销毁了吗,为什么此时AMan<> nil?明白AMan.Free的作用,问题是现在想知道 AMan.destroy;后为什么还会AMan<> nil?
查看完整描述

2 回答

?
森林海

TA贡献2011条经验 获得超2个赞

调用:AMan.Free会比AMan.destroy安全,这两个方法都不会将变量置为nil;
常规写法是FreeAndNil(AMan);这个函数除了执行对象的Free,还要将变量置为nil;

查看完整回答
反对 回复 2019-03-16
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

Free方法实际上是调用的Destroy:
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;
Free 首先检查对象指针是否为nil, 因此更安全. 而 Destroy只是释放了对象所分配的内存, 并不将对象指针置为nil, 需要手动设置: AMan = nil;
所以一般这样做法是较安全的: FreeAndNil(AMan);



查看完整回答
反对 回复 2019-03-16
  • 2 回答
  • 0 关注
  • 1241 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信