Главная страница
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.014 c
1-1186500273
Лёля
2007-08-07 19:24
2007.10.21
Сложная "шапка" в DBGrid


15-1190295780
S@shka
2007-09-20 17:43
2007.10.21
Утилита досупа к MS SQL ?


15-1190464568
me
2007-09-22 16:36
2007.10.21
Сайты, форумы для изучающих английский


6-1163414321
anis
2006-11-13 13:38
2007.10.21
Как отобразить ход выполнения закачки IdFTP?


2-1190376310
F@T@L_Err0r
2007-09-21 16:05
2007.10.21
Access voltation