Y
ynduanlian
Unregistered / Unconfirmed
GUEST, unregistred user!
在SysUtils中FreeAndNil是这样实现的:
procedure FreeAndNil(var Obj);
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil;
Temp.Free;
end;
我觉得很困惑,为什么通常看到的例程,通程都只用TXXX.Free这样就可以了,哪种情况下需要用这个FreeAndNil函数?
procedure FreeAndNil(var Obj);
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil;
Temp.Free;
end;
我觉得很困惑,为什么通常看到的例程,通程都只用TXXX.Free这样就可以了,哪种情况下需要用这个FreeAndNil函数?