Dispose

Declaration:
Procedure Dispose (P : pointer);
Procedure Dispose (P : Typed Pointer; Des : Procedure);
Description:
The first form Dispose releases the memory allocated with a call to New (539). 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.

Errors:
An runtime error will occur if the pointer doesn’t point to a location in the heap.
See also:
New (539), Getmem (506), Freemem (504)

Listing: refex/ex16.pp


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.