过程或函数里 
Function XXXXX ():String;
var
   A:某类
begin
  A:=某类.Create;
  Try
   .....
  finally
     A.Free;----- FreeandNil( A )
 end; 
end;在过程或函数里 
 用A.Free或 用 FreeandNIl(A) 是否相同 如果不同
我如果经常调用某个函数 是否用 FreeandNIl(A) 更严谨 安全些 【一相情愿的想】希望给我讲讲

解决方案 »

  1.   

    没太大差别,一般就愿意用哪个就用哪个把,freeandnil就是释放后把指针指向nil,某些场合这还是挺有用的,否则对象指针仍然存在,隐约记得好象叫什么悬浮指针。
      

  2.   

    procedure FreeAndNil(var Obj);
    var
      Temp: TObject;
    begin
      Temp := TObject(Obj);
      Pointer(Obj) := nil;
      Temp.Free;
    end;
    这个最佳···
      

  3.   

    在过程或函数体内,没有必要使用FreeAndNil函数,因为这些类对象变量超过其作用域,就不会在其他地方(过程或函数外)被引用,否则编译器都不会同意。FreeAndNil函数一般只针对单元级或程序级的全局变量,每次使用完毕之后置为nil,以防止后续的非法引用。