Цитата:
Сообщение от Евгений79
Код:
function test:Tstrings
begin
result:=TStringsList.Create;
result.add('over 1gb text'); // Ж)
end;
procedure blabla;
var
t:TStrings;
begin
t:= test;
memo1.lines.addStrings(t);
t.free;
end;
|
функция Test создаёт лист и присваивает адрес листа указателю Result, по выходу из этой функции адрес из Result копируется в другой указатель T дальше ты мутишь через указатель с этим списком всё что хочешь и освобождаешь его.
утечка возникнет если ты не сделав t.Free сделаешь ещё раз t:= test тогда у тебя в памяти будет 2 листа а указатель будет только на один
хорошо про указатели утечки и освобождения памяти вот тут
http://www.transl-gunsmoker.ru/2009/09/blog-post.html