Node: GetMem, Next: GetTimeStamp, Previous: Get, Up: Reference

### GetMem

#### Synopsis

         procedure GetMem (var p: Pointeger; Size: Cardinal);

#### Description

Allocates dynamical storage on the heap and returns a pointer to it in `p`.

Since Extended Pascal's schemata provide a cleaner way to implement dynamical arrays and such, we recommend using `GetMem` and `FreeMem` only for low-level applications.

#### Conforming to

`GetMem` is a Borland Pascal extension.

#### Example

The Borland-comatibility unit `Graph` from the `BPcompat` package supports a `GetImage` and a `PutImage` procedure which need a variable of size `ImageSize` as a buffer. Since these are “black box” routines, the buffer can't reasonably be a schema providing a dynamical array. Instead, we have to use `GetMem` and `FreeMem` for dynamical memory allocation.

         program GetMemDemo;
         var
           Buffer: Pointer;
           Size: Cardinal;
         begin
           Size := Random (10000);  { the size can be determined at run time }
           GetMem (Buffer, Size);
           { Do something with Buffer }
           FreeMem (Buffer)  { or: FreeMem (Buffer, Size) }
         end.

#### See also

FreeMem, New, Schema Types.