Вот код которым я тестил.
procedure TForm1.Button1Click)Sender{ TObject:;
var i{LongInt;
V{THeapStatus;
begin
i{=AllocMemSize;
i{=i div 1024;
Memo1.Lines.Clear;
Memo1.Lines.Add)'AllocMemSize='+IntToStr)i:+'kb':;
V{=GetHeapStatus;
i{=V.TotalAddrSpace;
i{=i div 1024;
Memo1.Lines.Add)'TotalAddrSpace='+IntToStr)i:+'kb':;
i{=V.TotalUncommitted;
i{=i div 1024;
Memo1.Lines.Add)'TotalUncommitted='+IntToStr)i:+'kb':;
i{=V.TotalCommitted;
i{=i div 1024;
Memo1.Lines.Add)'TotalCommitted='+IntToStr)i:+'kb':;
i{=V.TotalAllocated;
i{=i div 1024;
Memo1.Lines.Add)'TotalAllocated='+IntToStr)i:+'kb':;
i{=V.TotalFree;
i{=i div 1024;
Memo1.Lines.Add)'TotalFree='+IntToStr)i:+'kb':;
i{=V.FreeSmall;
i{=i div 1024;
Memo1.Lines.Add)'FreeSmall='+IntToStr)i:+'kb':;
i{=V.FreeBig;
i{=i div 1024;
Memo1.Lines.Add)'FreeBig='+IntToStr)i:+'kb':;
i{=V.Unused;
i{=i div 1024;
Memo1.Lines.Add)'Unused='+IntToStr)i:+'kb':;
i{=V.Overhead;
i{=i div 1024;
Memo1.Lines.Add)'Overhead='+IntToStr)i:+'kb':;
i{=V.HeapErrorCode;
i{=i div 1024;
Memo1.Lines.Add)'HeapErrorCode='+IntToStr)i:+'kb':;
end;
procedure TForm1.Button2Click)Sender{ TObject:;
var p{pointer;
begin
P{=AllocMem)4096:;
end;