Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
15-1190414620
Kostafey
2007-09-22 02:43
2007.10.21
А форум-то наш клиентами самый богатый.


15-1190311658
Beastie Boys
2007-09-20 22:07
2007.10.21
Не могу подключиться к АДСЛ


15-1190563931
ProgRAMmer Dimonych
2007-09-23 20:12
2007.10.21
Поддскажите, плз, самое простое и быстрое решение...


15-1190275337
Ega23
2007-09-20 12:02
2007.10.21
Как отказаться от Vista при покупке ноута?


2-1191146809
SveTTT
2007-09-30 14:06
2007.10.21
TButton не меняет цвет шрифта




   Наверх