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