М | Пожалуйста, используй теги |
Program Vedomost;
Uses
Crt;
Type
AdrText=^Anketa;
Anketa=record
Fio: string[70];
Work: string[70];
Adres: string[70];
end;
Adrzv=^Zveno;
Zveno=record
Key: word;
Lev, Prav: Adrzv;
Adr: AdrText
end;
var
s: word;
d, g, f: string[70];
a: Adrzv;
j: AdrText;
Procedure Zanesenie;
begin
write('Vvedite tabelnii nomer rabotyschego: ');
readln(s);
write('Vvedite fameliu, imia, otchestvo rabochego: ');
readln(d);
write('Vvedite mesto raboti, spetsialnost: ');
readln(f);
write('Vvedite domashnii adres rabotauschego: ');
readln(g);
end;
Procedure SozdanieTree(var a: Adrzv; s: word; d, f, g: string);
var
z: Adrzv;
j: AdrText;
begin
if a=Nil then
begin
New(j);
j^.Fio:= d;
j^.Work:= f;
j^.Adres:= g;
New (z);
z^.Key:= s;
z^.Lev:= Nil;
z^.Prav:= Nil;
z^.Adr:=j;
a:=z;
end
else
begin
if a^.Key>s then
SozdanieTree(a^.Lev, s, d, f, g)
else
SozdanieTree(a^.Prav, s, d, f, g);
end;
end;
Procedure DelVedomost(var a:Adrzv);
begin
if a=Nil then
exit;
DelVedomost(a^.Lev);
DelVedomost(a^.Prav);
dispose(Adr);
Adr:=Nil;
dispose(a);
a:=Nil;
end;
Вопрос: правильно ли проведена очистка памяти (память должна возвращаться в кучу перед завершением работы программы)? Возникает ошибка при выполнении удаления адреса a^.Adr.
Сообщение отредактировано: klem4 -