SetLength()如何在Delphi中分配内存
以这种形式声明数组时,将静态分配内存:SetLength()如何在Delphi中分配内存,delphi,Delphi,以这种形式声明数组时,将静态分配内存: var Data: array[0..5] of integer; 我的问题是,数组何时以以下方式声明: var Data: array of integer; .... SetLength( Data, Length( Data ) + 1 ); 内存是静态分配还是动态分配 我认为内存是静态分配的,数组是在内存中复制的,但我不确定。您声明的类型,array of Integer,称为a。动态数组是通过调用SetLength来分配的,内存是动态
var
Data: array[0..5] of integer;
我的问题是,数组何时以以下方式声明:
var
Data: array of integer;
....
SetLength( Data, Length( Data ) + 1 );
内存是静态分配还是动态分配
我认为内存是静态分配的,数组是在内存中复制的,但我不确定。您声明的类型,
array of Integer
,称为a。动态数组是通过调用SetLength来分配的,内存是动态的。这是动态分配,原因有三:
Length(Data)+1
的值取决于仅在运行时已知的信息,因此不能静态分配经验法则:当数组变量的大小在编译时已知时,该数组称为静态数组(它驻留),而在运行时称为动态数组。动态数组驻留在堆中。