A Simple problem!
At Step 1,the Result is "a.TotalCommitted=d.TotalCommitted",same as step 2
I don.t found the conflict,now the following is the codes:procedure TForm1.Button1Click(Sender: TObject);
var
  a,b,c,d:THeapStatus;
begin
  a:=GetHeapStatus;
  form2:= TForm2.Create(Application);
  b:=GetHeapStatus;
    //at this section if you don't allocate memory from global heap,b    will equal c
   //otherwise b<>c;
  c:=GetHeapStatus;
  form2.Free;
  d:=GetHeapStatus;
  showmessage(inttostr(a.TotalCommitted) +#13#10+ inttostr(d.TotalCommitted));
  assert(a.TotalCommitted=d.TotalCommitted,'The result is different!!');
end;What on earth are you doing?? tell me.