Alloc in BPW

I develop an MDI program.
In each MDI window, i have pointers.
When I open and close a lot of window, my program fail.
What is the good code ?

  PArrayInteger = ^TArrayInteger;
  TArrayInteger = array[1..1] of integer;
  TMyMWindow = object(TWindow)
    Tab = PArrayInteger;
    constructor Init(...);
    destructor  Done;
  end;

  TMyWindow.Init(...)
  begin
    TWindow.Init(...);
    GetMem(Tab, 22*sizeof(Integer));
  end;

  TMyWindow.Done;  
  begin
  ---> TWindow.Done;
       FreeMem(Tab, 22*sizeof(Integer));
  OR
  ---> FreeMem(Tab, 22*sizeof(Integer));
       TWindow.Done;
  end;

Thanks.
--
       {~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
       { Stephane Carreau                      | Universite Bordeaux I}
       { http://www.emi.u-bordeaux.fr/~carreau | Maitrise d'Ingenierie}
       { carr...@emi.u-bordeaux.fr             |     Mathematique     }
       {--------------------------------------------------------------}
       { "La poire qu'on supprime, c'est le journalisme qu'on opprime"}
       {   Philippe Alexandre - Les Guignols                          }
       {~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}