去掉Free会造成内存泄漏。
应该在函数结束前释放。

解决方案 »

  1.   

    最好用
    try 
      strLst.Create;
     .....
    finally
     strLst.Free
    end;
      

  2.   

    可是李维的书中就是这样用的:
    procedure TForm2.btnConnectClick(Sender: TObject);
    var
      vtblList : Variant;
    begin
      vtblList := VarArrayCreate([0, tblList.Count - 1], varVariant); //创建
      ...
    end;  可是找不到vtblList的释放语句  
      

  3.   

    Variant,String都属于自释放类型
    编译器会自动插入与之相对应的释放语句
      

  4.   

    vtblList不是对象,当然不用释放。
      

  5.   

    TStringList
    不用显式的释放
      

  6.   

    strLst.Create的写法本身就是错的,嘻嘻,应该是这么写的:
    strLst := TStringList.Create;它是一个Delphi的原生对象类型(不是Com类型),不会自动释放,应当明显释放它,否则除非程序结束,有一片存取不到的内存会一直被占着。