:::Delphi7 var
  DataBuff: Pchar;
begin
  GetMem(DataBuff, 10);//DataBuff到底可以存放几个字符?
  //...
  FreeMem(DataBuff);
end;我测试DataBuff可以存放任意字符,与10无关,为什么?再有
DataBuff:=Stralloc(10)
StrDispose(DataBuff);这两组我用哪个?

解决方案 »

  1.   

    我测试DataBuff可以存放任意字符,与10无关,为什么?越界了!
      

  2.   

    越界了。虽然当时不会立即告诉你出错,但是后面你会死得很难看。
    PCHAR结束符是nil。所以你申请10字节的内存,只能放9个字符。用FreeMem()释放。
      

  3.   

    csvmm() :
      是这样的。初学者很容易在这里搞错的哦。
      

  4.   

    那为什么我用GetMem(DataBuff, 10);仍然可以得到正确的结果?