📄 memman.pas
字号:
unit MemMan;
interface
var
GetMemCount, FreeMemCount,
ReallocMemCount: Integer;
implementation
uses
Windows, SysUtils;
var
OldMemMgr: TMemoryManager;
function NewGetMem (Size: Integer): Pointer;
begin
Inc (GetMemCount);
Result := OldMemMgr.GetMem (Size);
end;
function NewFreeMem (P: Pointer): Integer;
begin
Inc (FreeMemCount);
Result := OldMemMgr.FreeMem (P);
end;
function NewReallocMem (P: Pointer; Size: Integer): Pointer;
begin
Inc (ReallocMemCount);
Result := OldMemMgr.ReallocMem (P, Size);
end;
const
NewMemMgr: TMemoryManager = (
GetMem: NewGetMem;
FreeMem: NewFreeMem;
ReallocMem: NewReallocMem);
initialization
GetMemoryManager(OldMemMgr);
SetMemoryManager(NewMemMgr);
finalization
SetMemoryManager(OldMemMgr);
if (GetMemCount - FreeMemCount) <> 0 then
MessageBox (0, pChar (
'Objects left: ' + IntToStr (GetMemCount - FreeMemCount)),
'MemManager', mb_ok);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -