天天看點

記憶體洩漏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;

///最後修改代碼,沒有了記憶體洩漏