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

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

Free дерева


Страницы:   1 2

KADAN ©   (2004-07-22 16:37:00) 

мне нужно очистить память, выделенную под дерево. думал, что просто будет сделать так:
procedure FreeTree(var T: PTree);
begin
 case T^.NodeType of
   ntType1:
     begin
       FreeTree(T^.Left);
       FreeTree(T^.Right);
     end;
   ntType2:
     FreeTree(T^.Center);
 end;
 dispose(T);
end;

оказалось, так делать нельзя... как проверить, выделена ли память под ветви, а то поятоянно выскакивают AV и IPO.
само дерево выглядит так:

type  
 PTree = ^TTree;
 TTree = record
   case NodeType:TNodeType of
   ntType1:
     (Left, Right: PTree);
   ntType2:
     (Center: PTree);
   ntType3:
     ();
 end;


вообще, это дерево у меня - результат выполнения рекурсивной функции... мне бы хотелось, чтобы при возникновении ошибки эта функция сама бы очистила уже выделенную память и вернула nil.


KADAN   (2004-07-22 16:49:00) [21]

Iconka ©   (22.07.04 16:47) [3]

простите, недопонял...


Sandman25   (2004-07-22 16:49:00) [22]

[2] KADAN ©   (22.07.04 16:46)

А подумать?
Наводящий вопрос - есть ли какие-нибудь nil в Вашей структуре.


Iconka   (2004-07-22 16:47:00) [23]


>
> > if T=nil then...
>
> они не nil в том то и дело....

тогда

T:= nil
if T=nil then...


KADAN   (2004-07-22 16:46:00) [24]


> if T=nil then...

они не nil в том то и дело....


Sandman25   (2004-07-22 16:39:00) [25]

if T=nil then...


Страницы:   1 2

Наверх

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