回 帖 发 新 帖 刷新版面

主题:.free和.destroy的区别??

是不是.free先看对象是否存在,如果存在就destroy?
那么用.free什么情况下会报错呢?

[quote]
procedure TObject.Free;
begin
  if Self <> nil then
    Destroy;
end;
[/quote]

回复列表 (共2个回复)

沙发

还是我来回答你这个问题吧~~说了让你拜我为师你就是不拜~~

  free是会先判断变量是否为nil,但是你free一个对象以后这个变量并不是nil,也就是说它还是指向以前对象的地方~~但是这个对象应经不存在了,所以就出错了。
  要解决这个问题就要用 freeAndnil();来释放对象,他会把变量设置为nil。

板凳

3X
我每天会给你烧三炷香拜一拜的

我来回复

您尚未登录,请登录后再回复。点此登录或注册