SetLength()如何在Delphi中分配内存
发布时间:2020-12-15 09:20:57 所属栏目:大数据 来源:网络整理
导读:以这种形式声明数组时,将静态分配内存: var Data: array[0..5] of integer; 我的问题是当以下列方式声明数组时: var Data: array of integer;....SetLength( Data,Length( Data ) + 1 ); 内存是静态还是动态分配的? 我认为内存是静态分配的,数组是在内存
以这种形式声明数组时,将静态分配内存:
var Data: array[0..5] of integer; 我的问题是当以下列方式声明数组时: var Data: array of integer; .... SetLength( Data,Length( Data ) + 1 ); 内存是静态还是动态分配的? 我认为内存是静态分配的,数组是在内存中复制的,但我不确定. 解决方法
这是动态分配,原因有三:
>静态分配只能在编译时进行.作为一般规则,如果您正在使用过程或函数来执行此操作,则会从内存管理器分配动态内存.>由于Length(Data)1的值取决于仅在运行时已知的信息,因此无法静态分配.>静态字面意思是“不变”,动态意味着“改变”.您的SetLength调用正在更改数组的大小,将其增加1.因此,它只能在此处进行动态分配. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |