procedure TForm1.Button1Click(Sender: TObject); //把一个字符数组的内容拷贝到pchar变量中
var
  p:pchar;
  i:integer;
  arrChar:array[0..19] of char; 
begin
  for i:=0 to 19 do
    arrChar[i]:='a';
  getmem(p,20);
  CopyMemory(p, @arrChar[0], 20);
  showmessage(strpas(p));
  freemem(p);
end;
当上面的字符数组的长度是20的时候,拷贝后显示的p的内容有错误呀,最后会多个字符但是我把字符数组的长度变成10后,也就是arrChar:array[0..9] of char; 
申请的p的空间也相应减少,改后的程序如下:(显示的结果是正确的)。那到底要申请多少的空间呀? 
procedure TForm1.Button1Click(Sender: TObject); //把一个字符数组的内容拷贝到pchar变量中
var
  p:pchar;
  i:integer;
  arrChar:array[0..9] of char; 
begin
  for i:=0 to 9 do
    arrChar[i]:='a';
  getmem(p,10);
  CopyMemory(p, @arrChar[0], 10);
  showmessage(strpas(p));
  freemem(p);
end;    另外一个问题,如果我用StrAlloc申请内存空间,又该申请多大呢?