写了个程序把记录型的信息保存到tlist,代码如下:
type
  Tinfo := record
     infoid :integer;
     title :string[20];
     Content:string[254];
     ...
  end;
  pinfo := ^Tinfo;
var
  infoList :Tlist;
....procedure TMainForm.Addrecord(const info: TInfo);
var
  pinfo :PInfo;
begin
  New(pinfo);
  pinfo^ := info;
  infoList.Add(pinfo);
end;测试过sizeof(tinfo)=643,按理论计算,1000条记录占用的内存是643*1000 = 600多k,但是程序运行时,用任务察看器看,增加到1000条时,程序的内存增长了10M!
已测试过,如果把Addrecord内的代码全部注释掉,程序的内存处于一个稳定值,不会增加。
请熟悉内存分配的高手指点一下。

解决方案 »

  1.   

    楼主的所谓理论计算是有问题的;
    计算机不可能从第644个字节开始分配内存存储你的第二个info记录。
      

  2.   

    你这样声明
    type
      Tinfo :=packed record
         infoid :integer;
         title :string[20];
         Content:string[254];
         ...
      end;
      

  3.   

    new,new,new.... resource exhausted.
      

  4.   

    我也试过,TInfo里放的是Char数组,1000个内存增加不到1M。估计是别的地方的问题吧?