![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Delphi programs in API.
На английском. Очень подробно всё описано, плюс есть исходные коды готовых юнитов. Например SmallUtil, в котором есть все частоиспользуемые подпрограммы, и который в размере меньше, чем SysUtils (автор так утверждает - я не проверял). |
![]() ![]() |
Siberian GRemlin |
![]()
Сообщение
#2
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Как я понимаю при конкатенации (дурацкое слово) строк создаётся новый элемент типа string, и если потерять указатели на строки из которых складывалась новая, т.е. например S:=S+S, или добавлять вручную значение, например S:=S+'s', то будет утечка памяти? Хочу вспомнить как правильно и не громоздко работать на строками на D7, а то работа на Java расслабляет...
|
-=CHE@TER=- |
![]()
Сообщение
#3
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Похоже долго ты на Java писал. (*улыбается*)
Нет, насколько я помню, Delphi хранит указатели на сложные типы данных и количество переменных ссылающихся на них. Как только количество = 0, то переменная уничтожается. Если же ты делаешь T:=S;, то у тебя в T не хранится строка S, а только указатель на неё. Реально память выделяется, если я правильно помню, только когда ты начинаешь изменять T, например: T:=T + 's'; Уже не помню, где об этом читал, где-то статья была, может даже здесь (на форуме) ссылку давали. О, нашёл - там нет якорей, так что крути вниз до главы "Как же это происходит?". Так это происходит или нет, судить не берусь, но, вроде бы, в этой главе походит на правду. Спасибо сказали:
|
![]() ![]() |
Упрощённая версия | Сейчас: 21st August 2024 - 16:06 |