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.