加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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.因此,它只能在此处进行动态分配.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读