Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.18;
Скачать: CL | DM;

Вниз

Размышления...   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
14-1124864739
BKV
2005-08-24 10:25
2005.09.18
Нужен программист Санкт-Петербург


1-1125298768
Николай1
2005-08-29 10:59
2005.09.18
Передача функции как параметра процедуры


1-1124840973
ArMellon
2005-08-24 03:49
2005.09.18
как реализовать шифрование типизированных файлов


3-1123140957
-=snoop=-
2005-08-04 11:35
2005.09.18
и все же, как правильно работать с 866 страницей через ADO


1-1125061067
Aleksandr.
2005-08-26 16:57
2005.09.18
С чем может быть связана показ меню не в той кодировке?