Показать сообщение отдельно
  #7  
Старый 04.10.2012, 10:07
Аватар для Lost_Fish
Lost_Fish Lost_Fish вне форума
Начинающий
 
Регистрация: 21.07.2011
Адрес: Новосибирск
Сообщения: 103
Версия Delphi: Delphi 7,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Евгений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
__________________
Код сырец
Ответить с цитированием