H
hitcc
Unregistered / Unconfirmed
GUEST, unregistred user!
源码中FreeAndNil写成:
procedure FreeAndNil(var Obj);
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil;
Temp.Free;
end;
这里用局部变量Temp指向Obj,先把Obj置空,再free Temp这个局部变量。
为什么不直接写成
procedure FreeAndNil(var Obj);
begin
TObject(Obj).Free;
Pointer(Obj) := nil;
end;
呢?不解
procedure FreeAndNil(var Obj);
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil;
Temp.Free;
end;
这里用局部变量Temp指向Obj,先把Obj置空,再free Temp这个局部变量。
为什么不直接写成
procedure FreeAndNil(var Obj);
begin
TObject(Obj).Free;
Pointer(Obj) := nil;
end;
呢?不解