проблема с утечкой памяти в delphi

Apossum

Активный участник
Здравствуйте!

В качестве примера приведу вот такой простейший пример:
Код:
 function func(a : string;):TStringList;
var i:integer;
begin     result:=TStringList.Create;
    for i := 0 to 10 do     result.Add(a);
end;
В данном примере получаем утечку памяти на не очищенном TStringList и при этом очистить его так просто нельзя, result окажется пустым...
вариант с другой переменной TStringList и в конце result:=переменная, переменная.Free тоже выдает пустой result.

Как поступить в данной ситуации? Описать новый класс, или реализовать в виде массива? Это всего лишь простейший пример, но в "настоящей" функции используется большое количество строк и утечка выходит серьезной. Подскажите как быть?
 
Чот не вижу где здесь утечка памяти? Опишите подробнее что вы имеете в виду
 
Чот не вижу где здесь утечка памяти? Опишите подробнее что вы имеете в виду

Код:
function pars(RegString : string; thmlcode: String):TStringList;
var
RegExp: TRegExpr;
textmp:TStringList;
begin
    textmp:=TStringList.Create;
    RegExp := TRegExpr.Create;
    RegExp.InputString := thmlcode;
    RegExp.Expression := RegString;
    try
     if RegExp.Exec then
        repeat
         textmp.Add(RegExp.Match[1]);
          until not RegExp.ExecNext;
        RegExp.Free;
    except
    end;
 result:=textmp;
    //textmp.Free;  // если очистить тут textmp, то получаем AV
end;


procedure TForm1.sButton10Click(Sender: TObject);
var
hlinks:TStringList;
begin
hlinks:=TStringList.Create;
hlinks:=pars('_url:(.+?)\.ru','111_url:sdrnyern.ru11111_url:sdrnyern.ru111111111111_url:sdrnyern.ru1111111111_url:sdrnyern.ru111111111111');
Form1.sRichEdit9.Lines.Add(hlinks.Text);
hlinks.Free;
end;
При завершении получаем Memory Leak
13-20 bytes: Uknown x1
69-76 bytes: TStringList x1
 
Назад
Верх Низ