Форум: "Потрепаться";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизРазмышления... Найти похожие ветки
← →
Piter © (2005-08-19 00:35) [0]Рассмотрим код:
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
s := "test";
Messagebox(Handle, PChar("утечка " + s), nil, 0);
end;
фактически, здесь идет утечка памяти, правильно?
Странно как-то...
← →
DrPass © (2005-08-19 00:42) [1]Нет тут утечки. ANSI-строки - они с управляемым временем жизни. Выйдет за пределы видимости, и умрет.
← →
GuAV © (2005-08-19 01:15) [2]Обе строки s и "утечка" + s будут финализированы.
Финализация "утечка" + s приведет к освобождению памяти. (refcount = 1, строка в дельфийской куче)
Финализация s не приведет к освобождению памяти. (refcount=FFFFFFFF, строка "test" прямо в коде)
Посмотри Ctrl+Alt+C, проверь ;-)
← →
Piter © (2005-08-19 01:52) [3]GuAV © (19.08.05 1:15) [2]
да, мне в общем Jack128 уже все объяснил.
Но, имхо, и ты чуть неправ :)
GuAV © (19.08.05 1:15) [2]
Финализация s не приведет к освобождению памяти. (refcount=FFFFFFFF, строка "test" прямо в коде)
строчка test не будет прямо в коде. То есть, "test" то будет, но при присвоении ее переменной String произойдет копирование строки (ибо нельзя будет разместить переменную s в области адресов, где хранится "test").
← →
Юрий Зотов © (2005-08-19 05:05) [4]Гы... а говорят, сайт плохой... брешут ведь... гы...
← →
Piter © (2005-08-19 14:35) [5]Юрий Зотов © (19.08.05 5:05) [4]
повеселили? :)
Ну мы так только рады мастеров посмешить, все разрядка :)
Ну и вообще - я конечно лоханулся, но на самом деле чтобы прямо очень серьезно. Я таки понял, что будет создана неявная переменная. А вот дальше я почему-то был уверен, что эту неявную переменную компилятор не будет финализировать. Почему так подумал - не знаю...
А компилятор умный :)
← →
Reindeer Moss Eater © (2005-08-19 14:43) [6]Вот если бы ты сделал
Messagebox(Handle, StrNew(PChar("утечка " + s)), nil, 0);
тады бы была утечка.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c