Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамическое создание строк


Страницы:   1 2 3 4

Skier ©   (2002-06-26 13:18:00) 

Господа, мне нужно динамически создавать строки
(не PChar, а именно String(!) )

Я делаю что-то вроде этого :

.......................
type
PString = ^String;
var
AStr := AllocMem(4);
AStr^ := "hello, world !"
FreeMem(AStr, 4);
.......................

Вроде бы всё работает, но что-то меня
терзают смутные сомненния : не происходит ли memory leak ?
И вообще как это всё лучше всего делать ?


:smile:   (2002-06-26 13:49:00) [61]

Не будет. Освободится только 4 байта указателя.


Skier   (2002-06-26 13:44:00) [62]

> panov

Проблема в следующем : будет ли освобождаться
память выделенная Delphi под "hello, world !" ?
Меня это очень интересует.


Игорь Шевченко   (2002-06-26 13:42:00) [63]

Skier © (26.06.02 13:33)

Не можете привести пример, а то непонятно...

По-моему, проще не мучиться со строками, а выделить память под текст, иметь на него указатель типа PChar...


panov   (2002-06-26 13:37:00) [64]

>Skier © (26.06.02 13:18)
FreeMem освобождает память. В чем проблема-то?


panov   (2002-06-26 13:36:00) [65]

>Kaban © (26.06.02 13:34)
По моему это уж лишнее
В общем случае - нет. -)
Например, для глобальных переменных...


Kaban   (2002-06-26 13:36:00) [66]

Бред


Kaban   (2002-06-26 13:34:00) [67]

По моему это уж лишнее
str := ""; //память освобождена


Skier   (2002-06-26 13:33:00) [68]

> Игорь Шевченко
> Anatoly Podgoretsky

Мне нужно программно создать указатель на строку и работать
с ней, а потом этот указатель прибить.
Но меня интересует убъётся ли строка hello, world ! ?
(в моём случае) станет ли кол-во сслылок на неё = 0, чтобы
Delphi снесла её из памяти ??


panov   (2002-06-26 13:31:00) [69]

str := "hello, world !";
...
str := ""; //память освобождена


Skier   (2002-06-26 13:29:00) [70]

> Kaban

Ну да... не строка создаётся, а указатель на неё родимую.
Но всё равно вроде работает, а вроде бы что-то тут не так...


Игорь Шевченко   (2002-06-26 13:29:00) [71]

А зачем? Строка же так создается динамически и, по сути, является указателем


Anatoly Podgoretsky   (2002-06-26 13:27:00) [72]

Зачем такое извращение, работа со строками и так происходит динамически и автоматически.


Kaban   (2002-06-26 13:26:00) [73]

че-то я не вижу где тут "динамически создаются строки"
и что вы вообще под этим подразумеваете


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо