Node: Memory Management Routines, Next: Operations for Integer and Ordinal Types, Previous: Accessing Command Line Arguments, Up: Library Routines

#### Memory Management Routines

Besides the standard `New` and `Dispose` routines, GPC also allows BP style dynamic memory management with `GetMem` and `FreeMem`:

         GetMem (MyPtr, 1024);
         FreeMem (MyPtr, 1024);

One somehow strange feature of Borland is not supported: You cannot free parts of a variable with `FreeMem`, while the rest is still used and can be freed later by another `FreeMem` call:

         program PartialFreeMemDemo;

         type
           Vector = array [0 .. 1023] of Integer;
           VecPtr = ^Vector;

         var
           p, q: VecPtr;

         begin
           GetMem (p, 1024 * SizeOf (Integer));
           q := VecPtr (@p^[512]);

           { ... }

           FreeMem (p, 512 * SizeOf (Integer));

           { ... }

           FreeMem (q, 512 * SizeOf (Integer));
         end.