Модуль: System
type TMemoryManager = record
GetMem: function( Size: Integer): Pointer;
FreeMem: function( P: Pointer): Integer;
ReallocMem: function( P: Pointer; Size: Integer): Pointer;
end;
Описание
Процедура возвращает указатели на поля диспетчера памяти, установленного в текущий момент.
Пример
var
GetMemCount: Integer;
FreeMemCount: Integer;
ReallocMemCount: Integer;
OldMemMngr: TMemoryManager;
function NewGetMem(Size: Integer): Pointer;
begin
Inc(GetMemCount);
Result:= OldMemMngr.GetMem(Size);
end;
function NewFreeMem(P: Pointer): Integer;
begin
Inc(FreeMemCount);
Result:= OldMemMngr.FreeMem(P);
end;
function NewReallocMem(P: Pointer; Size: Integer): Pointer;
begin
Inc(ReallocMemCount);
Result:= OldMemMngr.ReallocMem(P, Size);
end;
const
NewMemMgr: TMemoryManager = (GetMem: NewGetMem;
FreeMem: NewFreeMem;
ReallocMem: NewReallocMem);
procedure SetNewMemMgr;
begin
GetMemoryManager(OldMemMngr);
SetMemoryManager(NewMemMngr);
end;