Я пока делаю так. У меня есть такой простенький модуль:
- Код: Выделить всё
unit checkMem;
interface
function getlost: longint;
implementation
uses sysUtils, dialogs;
var HPs : THeapStatus;
var HPe : THeapStatus;
var lost: integer;
function getlost: longint;
begin
HPe := getHeapStatus;
Result:=HPe.TotalAllocated-HPs.TotalAllocated;
end;
initialization
HPs := getHeapStatus;
finalization
HPe := getHeapStatus;
Lost:= HPe.TotalAllocated - HPs.TotalAllocated;
if lost > 0 then begin
beep;
ShowMessage( format('lostMem: %d',[ lost ]) );
end;
end.
Поиск утечек в своем классе я делаю с помощью юниттеста:
- Код: Выделить всё
procedure TContactDialogTestCase.MemoryLeaks;
var c: TContactController;
l: longint;
begin
l:=getlost;
c:=TContactController.Create(TContactDialog, cnEdit, TF.ZC, 123, 2574, -1, TEST_CLIENT_NAME);
c.Free;
AssertEquals('Утечка памяти', 0, getlost - l);
end;
То есть тут что-то не так с определением размера занятой в данный момент памяти?