(*$M 32768, 0, 327680 *)

Program SE_AVAIL;
Uses
  CRT, DOS;

(*
 *  05.02.95: Creation
 *
 *  Il y a 2 manieres d'allouer de la memoire centrale dynamiquement:
 *  -  avec NEW / DISPOSE
 *  -  avec GetMEM / FreeMEM  (turbo Pascal )
 *
 *  Reflechir aux questions:
 *  
 *  Comment allouer une zone de longueur non determinee ?
 *   ( dependant d'une valeur lue )
 * 
 *  Comment acceder le 10e element de la zone allou‚e ?
 * 
 *  Avantages et inconvenients des 2 methodes ?
 *
 *  Utiliser la ligne 
 *  WriteLN(' Mem_AVAIL = ', MemAVAIL:6, ' - Max_AVAIL = ', MaxAVAIL:6);
 *  dans les programmes SE_CLICK et SE_ITIME
 *)

Const MaxTAB=16000;
Type  TypTAB=Array[ 1..MaxTAB ] Of Integer;
Var   PtrT1, PtrT2, PtrT3 :^TypTAB;  PtrT4, PtrT5 :Pointer;

(*-----*)

Begin  (* Debut *)
  ClrSCR;
  WriteLN(' Mem_AVAIL = ', MemAVAIL:6, ' - Max_AVAIL = ', MaxAVAIL:6);
  NEW(PtrT1);
  NEW(PtrT2);
  NEW(PtrT3);
  GetMEM(PtrT4, 16000);
  GetMEM(PtrT5, 16000);
  WriteLN(' Mem_AVAIL = ', MemAVAIL:6, ' - Max_AVAIL = ', MaxAVAIL:6);

  Dispose(PtrT1);
  Dispose(PtrT2);
  FreeMEM(PtrT4, 16000);
  WriteLN(' Mem_AVAIL = ', MemAVAIL:6, ' - Max_AVAIL = ', MaxAVAIL:6);

  Dispose(PtrT3);
  FreeMEM(PtrT5, 16000);
  WriteLN(' Mem_AVAIL = ', MemAVAIL:6, ' - Max_AVAIL = ', MaxAVAIL:6);
  ReadLN;
End.   (* SE_AVAIL *)
