天天看点

内存泄漏superobject

这几天在移植代码,将之前的项目移植到插件框架里面,因为之前是单EXE的。对内存泄漏问题不是很在意。在DLL下面就不一样了,所以加入FastMM4来做监控调试。发现之前的ScripParser解析SQL时存在内存泄漏。

其中有段代码

function ObjectFindFirst(const obj: ISuperObject; var F: TSuperObjectIter): boolean;

var

  i: TSuperAvlEntry;

begin

  if ObjectIsType(obj, stObject) then

  begin

    F.Ite := TSuperAvlIterator.Create(obj.AsObject);

    F.Ite.First;

    i := F.Ite.GetIter;

    if i <> nil then

    begin

      f.key := i.Name;

      f.val := i.Value;

      Result := true;

    end else

      Result := False;   

     //原来返回False也有可能创建了

    //F.Ite := TSuperAvlIterator.Create(obj.AsObject);

  end else

    Result := False;

end;

///最后修改代码,没有了内存泄漏