[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] | Reference for unit 'System' (#rtl)

# TMemoryManager

Record describing the current memory manager

## Declaration

Source position: heaph.inc line 39

`type TMemoryManager = record`
`NeedLock: Boolean;` |  | Does the memory manager require a lock
`Getmem: function(` |  | Function called when memory must be allocated on the heap.
`Size: PtrUInt`
`):Pointer;`
`Freemem: function(` |  | Function called when previously allocated memory can be freed again.
`p: pointer`
`):PtrUInt;`
`FreememSize: function(` |  | Function called when previously allocated memory with a known size can be freed again.
`p: pointer;`
`Size: PtrUInt`
`):PtrUInt;`
`AllocMem: function(` |  | Same as getmem, but additionally clear the allocated memory (filled with 0 bytes).
`Size: PtrUInt`
`):Pointer;`
`ReAllocMem: function(` |  | Handler called when an allocated memory block should be resized
`var p: pointer;`
`Size: PtrUInt`
`):Pointer;`
`MemSize: function(` |  | Return the size of a memory block.
`p: pointer`
`):PtrUInt;`
`InitThread: procedure;` |  | Called when a thread is initialized
`DoneThread: procedure;` |  | Called when a thread ends
`RelocateHeap: procedure;` |  | Relocate the heap to a different location
`GetHeapStatus: function: THeapStatus;` |  | Handler called when the heap status must be reported.
`GetFPCHeapStatus: function: TFPCHeapStatus;` |  | Handler to get FPC heap status information.
`end;`

## Description

TMemoryManager describes the memory manager. For more information about the memory manager, see the programmer's reference.