Size of heap space allocated to pointer

Given a pointer, how does one (efficiently) determine the size of the allocated
heap space? The value returned from pointer (offset - 4 bytes) does indicate
the the (general) size, but is not exact. For example, the following code
(Delphi 3.02) indicates a "size" of 106 bytes.

var
  P: PInt;
begin
  P := AllocMem(99);
  Dec(P);
  Showmessage (InttoStr(P^));   // yep, 106
  Inc(P);
  FreeMem(P, 99);
end;

Any assistance with this question is appreciated.

M Brady