| [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.