当以这种形式声明数组时,内存是静态分配的:
var
Data: array[0..5] of integer;
我的问题是以下列方式声明数组:
var
Data: array of integer;
....
SetLength( Data, Length( Data ) + 1 );
是静态还是动态分配内存?
我认为内存是静态分配的,数组是在内存中复制的,但我不确定。
答案 0 :(得分:5)
这是动态分配,原因有三:
Length( Data ) + 1
的值取决于仅在运行时已知的信息,因此无法静态分配。答案 1 :(得分:2)
您声明的类型array of Integer
称为dynamic array。通过调用SetLength
来分配动态数组,并且内存是动态的。