写了个程序把记录型的信息保存到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内的代码全部注释掉,程序的内存处于一个稳定值,不会增加。
请熟悉内存分配的高手指点一下。
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内的代码全部注释掉,程序的内存处于一个稳定值,不会增加。
请熟悉内存分配的高手指点一下。
计算机不可能从第644个字节开始分配内存存储你的第二个info记录。
type
Tinfo :=packed record
infoid :integer;
title :string[20];
Content:string[254];
...
end;