让我问一个非常具体的问题: 当你有一个大型数组时,有什么区别(内存使用情况), 或大小相同的大型列表(用指针实现)。 e.g
var a:array[1..1000000] of integer;
和
type
po=^p1;
p1=record
v:integer;
next:po;
end;
var p:po;
并创建包含1000000个整数的列表。
答案 0 :(得分:0)
x86 bpointers是4个字节(32位)。 x64指针是8个字节(64位)。
在2.,它是最小尺寸增加。实际的大小增加可能更大,取决于Embarcadero将如何在x64世界中记录打包和字段对齐。
- 的Jeroen
答案 1 :(得分:0)
记录大小为8个字节(在32位Delphi上),数组为4个字节(*长度)。
假设指针的大小在即将到来的64位Delphi中为8个字节,则记录为12个字节(如果整数保持为4,我认为)。
PS:我认为最好将大型数组声明为动态,因为动态数组的内存是在堆而不是堆栈上分配的。