[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] Reference for unit 'System' (#rtl)

Dispose

Free dynamically allocated memory

Declaration

Source position: line 0

procedure Dispose(

  P: Pointer

);

procedure Dispose(

  P: TypedPointer;

  Des: TProcedure

);

Description

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.

Errors

An runtime error will occur if the pointer doesn't point to a location in the heap.

See also

New

  

Dynamically allocate memory for variable

Getmem

  

Allocate new memory on the heap

Freemem

  

Release allocated memory

Example

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.
The latest version of this document can be found at lazarus-ccr.sourceforge.net.