freeMem(pointer,size)中第2个参数好像可以忽略,如果忽略了,它是如何知道需要释放多少内存?var
 p:pDword;
begin
  p:=allocMem(100*sizeOf(dword));
  freeMem(p,100*sizeOf(dword));
end;如上面的代码,可以直接freeMem(p)吗?如果省略了,它怎么知道要释放100*4的内存?

解决方案 »

  1.   

    delphi有自己一套内存管理,他知道那指针所指向的内存大小。
      

  2.   

    Size specifies the size in bytes of the dynamic variable to dispose of; if specified, it must be exactly the number of bytes previously allocated to that variable by GetMem. 看帮助吧
      

  3.   

    帮助里面建议用New和Dispose代替GetMem,FreeMem至于为什么,这是另一问题了
      

  4.   

    不写 只会放4个长度吧?
    默认应该是 length(P)
      

  5.   

    我一般用Getmem和FreeMem,FreeMem没有指定过第二个参数。
    p:Pointer;
    Getmem(p,1000);
    ..
    FreeMem(p);