【发布时间】:2010-12-26 14:18:14
【问题描述】:
这是一个检查内存分配的简单程序。使用任务管理器检查前后值表明每个动态数组在 size = 1 时占用 20 个字节的内存。元素大小为 4,这意味着簿记数据的开销为 16 个字节。
通过查看 system.pas,我可以找到 -4 字节的数组长度字段和 -8 字节的引用计数,但我似乎找不到对其他 8 个的任何引用。任何人都知道他们怎么办?
示例程序:
program Project1;
{$APPTYPE CONSOLE}
type
TDynArray = array of integer;
TLotsOfArrays = array[1..1000000] of TDynArray;
PLotsOfArrays = ^TLotsOfArrays;
procedure allocateArrays;
var
arrays: PLotsOfArrays;
i: integer;
begin
new(arrays);
for I := 1 to 1000000 do
setLength(arrays^[i], 1);
end;
begin
readln;
allocateArrays;
readln;
end.
【问题讨论】:
标签: delphi data-structures overhead dynamic-arrays