关于字符串内存分配的有关问题,求教

关于字符串内存分配的问题,求教
delphi7:SysUtils.pas

function StrAlloc(Size: Cardinal): PChar;
begin
  Inc(Size, SizeOf(Cardinal));//为什么要加Inc?
  GetMem(Result, Size);
  Cardinal(Pointer(Result)^) := Size;//什么意思
  Inc(Result, SizeOf(Cardinal));//为什么要加Inc?
end;

function StrBufSize(const Str: PChar): Cardinal;
var
  P: PChar;
begin
  P := Str;
  Dec(P, SizeOf(Cardinal));//为什么要 Dec?
  Result := Cardinal(Pointer(P)^) - SizeOf(Cardinal);
end;
内存分配 sizeof Delphi

------解决方案--------------------
实际上就是分配一块内存,多分配4字节,第一个位置记录长度,然后返回给用户使用的是后面的部分.

-----------------------------------------------

------解决方案--------------------
4个字节的长度
------解决方案--------------------
返回给用户使用的部分           
------解决方案--------------------

-----------------------------------------------