![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Код:
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; t - как видно освобождаем из памяти, а вот функцию test нет. Или же все нормально? |
#2
|
||||
|
||||
![]() Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Евгений79 (04.10.2012)
|
#3
|
|||
|
|||
![]() Значит командой t.free мы освобождаем и t и функцию?
Ну если нет исключений ![]() |
#4
|
||||
|
||||
![]() Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Евгений79 (04.10.2012)
|
#5
|
|||
|
|||
![]() Разжуйте пожалуйста механику процесса, чтобы в голове был порядок.
Если это, конечно, возможно сделать в нескольких предложениях. |
#6
|
||||
|
||||
![]() все Ok будет
Пишу программы за еду. __________________ |
#7
|
||||
|
||||
![]() Цитата:
функция Test создаёт лист и присваивает адрес листа указателю Result, по выходу из этой функции адрес из Result копируется в другой указатель T дальше ты мутишь через указатель с этим списком всё что хочешь и освобождаешь его. утечка возникнет если ты не сделав t.Free сделаешь ещё раз t:= test тогда у тебя в памяти будет 2 листа а указатель будет только на один хорошо про указатели утечки и освобождения памяти вот тут http://www.transl-gunsmoker.ru/2009/09/blog-post.html Код сырец Последний раз редактировалось Lost_Fish, 04.10.2012 в 10:15. |
Этот пользователь сказал Спасибо Lost_Fish за это полезное сообщение: | ||
Евгений79 (04.10.2012)
|