Freeing Pointers to Classwide Types


Freeing pointers to classwide types is done in the same way as freeing any pointer to a type, using Ada.Unchecked_Deallocation.

with Ada.Unchecked_Deallocation;

procedure testfree is
   type Object is tagged
      record
         Test : Integer;
      end record;

   type Object2 is new Object with
      record
         More_Stuff : Integer;
      end record;

   type Pointer is access all Object'Class;

   procedure Free_Object is new
      Ada.Unchecked_Deallocation(Object'Class, Pointer);
   -- Note the use of the classwide type Object'Class


   X : Pointer := new Object;
   Y : Pointer := new Object2;
begin
   Free_Object(X);
   Free_Object(Y);
end testfree;


Contributed by: David Botton
Contributed on: January 4, 1999
Last Updated: September 20, 2000
License: Public Domain
Back