| [Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] | 
Free dynamically allocated memory
Source position: system.fpd line 40
procedure Dispose(  | 
P: Pointer  | 
);  | 
P: TypedPointer;  | 
Des: TProcedure  | 
);  | 
The first form Dispose releases the memory allocated with a call to New. The pointer P must be typed. The released memory is returned to the heap.
The second form of Dispose accepts as a first parameter a pointer to an object type, and as a second parameter the name of a destructor of this object. The destructor will be called, and the memory allocated for the object will be freed.
An runtime error will occur if the pointer doesn't point to a location in the heap.
  | 
Dynamically allocate memory for variable  | 
|
  | 
Allocate new memory on the heap  | 
|
  | 
Release allocated memory  | 
Program Example16; { Program to demonstrate the Dispose and New functions. } Type SS = String[20]; AnObj = Object I : integer; Constructor Init; Destructor Done; end; Var P : ^SS; T : ^AnObj; Constructor Anobj.Init; begin Writeln ('Initializing an instance of AnObj !'); end; Destructor AnObj.Done; begin Writeln ('Destroying an instance of AnObj !'); end; begin New (P); P^:='Hello, World !'; Dispose (P); { P is undefined from here on !} New(T,Init); T^.i:=0; Dispose (T,Done); end.