crashtuak
12-02-2011, 20:34
Есть такие типы данных:
type
Plane=record
name: string[20];
manfac: string[20];
lengs: integer;
height: integer;
wingsL: integer;
wingsS: integer;
end;
PPlane=^Plane;
TFile = File of Plane;
и несколько функций:
{reads data from keyboard and returns completed Plane Record}
function EnterItem:PPlane;
var
ptmp:PPlane;
begin
New(ptmp);
writeln('Enter name of plane(string, 20 chars):');
readln(ptmp^.name);
writeln('Enter manufactor of plane(string, 20 chars):');
readln(ptmp^.manfac);
writeln('Enter length of plane(integer):');
readln(ptmp^.lengs);
writeln('Enter heigth of plane(integer):');
readln(ptmp^.height);
writeln('Enter length of wings(integer):');
readln(ptmp^.wingsL);
writeln('Enter square of wings(integer):');
readln(ptmp^.wingsS);
EnterItem:=ptmp;
end;
{adds N items to end of main file(f)}
procedure NToEnd (n:integer;var f:TFile);
var
i:integer;
begin
RESET(f);
seek(f,filesize(f));
for i:=1 to n do
begin
writeln('Entering item number:',i);
write(f,EnterItem^);
end;
writeln('Entering finished!');
CLOSE(f);
end;
и вопрос: не будет ли утечки памяти при такой реализации, будут ли экземпляры Plane удалятся с памяти после использования? Такая реализация возникла при создании функции которая должна возвратить собственный тип, чего Турбо Паскаль не позволяет...
type
Plane=record
name: string[20];
manfac: string[20];
lengs: integer;
height: integer;
wingsL: integer;
wingsS: integer;
end;
PPlane=^Plane;
TFile = File of Plane;
и несколько функций:
{reads data from keyboard and returns completed Plane Record}
function EnterItem:PPlane;
var
ptmp:PPlane;
begin
New(ptmp);
writeln('Enter name of plane(string, 20 chars):');
readln(ptmp^.name);
writeln('Enter manufactor of plane(string, 20 chars):');
readln(ptmp^.manfac);
writeln('Enter length of plane(integer):');
readln(ptmp^.lengs);
writeln('Enter heigth of plane(integer):');
readln(ptmp^.height);
writeln('Enter length of wings(integer):');
readln(ptmp^.wingsL);
writeln('Enter square of wings(integer):');
readln(ptmp^.wingsS);
EnterItem:=ptmp;
end;
{adds N items to end of main file(f)}
procedure NToEnd (n:integer;var f:TFile);
var
i:integer;
begin
RESET(f);
seek(f,filesize(f));
for i:=1 to n do
begin
writeln('Entering item number:',i);
write(f,EnterItem^);
end;
writeln('Entering finished!');
CLOSE(f);
end;
и вопрос: не будет ли утечки памяти при такой реализации, будут ли экземпляры Plane удалятся с памяти после использования? Такая реализация возникла при создании функции которая должна возвратить собственный тип, чего Турбо Паскаль не позволяет...