, . , . HeapOrg, - FreePtr, HeapPtr. New. :
Var
I,J: ^Integer;
R: ^Real;
Begin
New(I); { I ,}
{ I}
End.
I , HeapPtr, HeapPtr (.. Integer); New(R) - 6 . , , :
I^:= 2;
R^:= 2*Pi;
: R^:= Sqr (R^) + I^ - 17;
: R:= Sqr (R^) + I^ - 17; R .
Dispose:
Dispose(R);
Dispose(I); - , 8 .
Dispose(Ptr) Ptr, , . . , , Nil.
, Nil:
Const
P:^Real = Nil;
........
Begin
If P = Nil then
New (P);
........
Dispose(P);
P:= Nil;
End.
:
1. HeapPtr - Mark.
2. .
3. Release.
Var
P, P1, P2, P3, P4, P5: ^Integer;
Begin
New(P1);
New(P2);
New(P3);
New(P4);
New(P5);
Mark(P);
........
Release (P);
End.
Mark(P) P HeapPtr, .
Release , Dispose, .
GetMem(P, Size) FreeMem(P, Size) - .
P - , Size - .
GetMem 65521 . , , , , !!!
:
Var
i,j: ^Integer;
r: ^Real;
Begin
New (i); { I:= HeapOrg; HeapPtr:= HeapOrg+2 }
j:= i; { J:= HeapOrg }
j^:=2;
Dispose (i); { HeapPtr:= HeapOrg }
New (r); { R:= HeapOrg; HeapPtr:= HeapOrg+6 }
r^:= Pi;
WriteLn (j^);
End.
{ : "8578"}
{ }
|
|
. , , , .
, , . :
Program LostReference;
Type
PPerson = ^Person;
Person = Record
....
End;
Procedure GetPerson;
Var
: erson;
Begin
P:= New(PPerson);
End;
Begin
WriteLn(MemAvail);
GetPerson;
Writeln(MemAvail);
End.
New GetPerson Person. . , GetPerson. . . , , , GetPerson, , , Dispose. , GetPerson , "", - - GetPerson. GetPerson .
, , , Turbo Pascal, , , , . , , - (, ).
, , , . :
Var
P: Integer;
Procedure X1;
Var
i: Integer;
Begin
i:= 12345;
P:= @i;
WriteLn(P^); { 12345 }
End;
Procedure X2;
Var
j: Integer;
Begin
j:= 7777;
WriteLn(P^); { 7777, 12345 }
End;
Begin
X1;
X2;
End;
( X1) i. X2 i , . 2 , , i, j, , WriteLn.
|
|
, , a , . : , ( ) , - "" , .
61. .
. . . .
- ( , , "" ), - .
:
- -, , .
- -, . -, . , .
- -, .
:
< > = FILE OF <>;
< > = ;
< > = FILE;.
< > - ,
FILE, OF, T - (.: , , ),
< > - -, . :
Type
Man=record
Name: string;
LastName: string;
End;
Men=file of Man;
Var
Staff: Men;
Numbers: file of real;
Book: Text;
A_File: File;
:
( FILE OF...),
( ),
( FILE).
- : INPUT - OUTPUT - . . - , .
, ( ). , : .
ASSIGN:
ASSIGN(< .. >, < .. >);
< .. > - ( , );
< .. > - , .
:
Assign(Book,PascalLecture.txt);
, , ASSIGN(f, ), INPUT UU.