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

Вниз

"Освобождение структуры"   Найти похожие ветки 

 
race1   (2007-08-03 16:23) [0]

Есть такая структура:
TRec = record
 num: Integer;
 str: String;
end;

И указатель на неё:
PRec = ^TRec;

Я выделяю память:
...
r: PRec;
...
New(r);

И присваиваю значение:
r^.num := 1;
r^.str := "str";

Как теперь правильно удалить всю выделенную память?

1. Dispose(r);
2. r^.str := "";
 Dispose(r);


 
Сергей М. ©   (2007-08-03 16:25) [1]

Dispose(r);


 
DVM ©   (2007-08-03 16:32) [2]


> race1  

О string компилятор позаботится сам.


 
race1   (2007-08-03 16:35) [3]

FastMM4 ругается на утечку памяти... После того как сделал второй вариант, ругаться перестал.


 
DVM ©   (2007-08-03 16:39) [4]


> race1  

а у меня не ругается


 
race1   (2007-08-03 16:46) [5]

Нашёл багу. У меня список указателей и я в цикле освобождаю память:
for i := 0 to List.Count - 1 do
 Dispose(List[i]);

Если сделать приведение, то утечка исчезнет:
for i := 0 to List.Count - 1 do
 Dispose(PRec(List[i]));

Спасибо вам :)


 
AlexWlad ©   (2007-08-03 18:43) [6]

Для строк делай Finalize(r^.str) и будет тебе щастье.


 
Dib@zol ©   (2007-08-03 18:44) [7]

А не лучше ли GetMem/FreeMem???


 
Инс ©   (2007-08-03 18:57) [8]


> А не лучше ли GetMem/FreeMem???

В данном случае - думаю нет. FreeMem не освободит память под строку.


 
Суслик ©   (2007-08-03 23:02) [9]


> race1   (03.08.07 16:46) [5]
> Нашёл багу. У меня список указателей и я в цикле освобождаю
> память:
> for i := 0 to List.Count - 1 do
>  Dispose(List[i]);
>
> Если сделать приведение, то утечка исчезнет:
> for i := 0 to List.Count - 1 do
>  Dispose(PRec(List[i]));
>
> Спасибо вам :)

логично - ибо не знает компилятор на что указывает указатель.



Страницы: 1 вся ветка

Текущий архив: 2007.10.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
2-1190921326
Алик
2007-09-27 23:28
2007.10.21
Как правильно очищать буффер?


15-1190182046
Sandman31
2007-09-19 10:07
2007.10.21
Демография


2-1189552979
Delphi-master
2007-09-12 03:22
2007.10.21
Необходимо!!! Обработка клика мышки с высокой точностью!


15-1190181663
oldman
2007-09-19 10:01
2007.10.21
Все программисты знают, что компьютер - железный глупый ящик


3-1176821654
Kostafey
2007-04-17 18:54
2007.10.21
Обновление значений полей взятых из присоединенной таблицы