Delphi 指令中的“恒定长度”动态数组?

ocebsuys  于 2023-06-22  发布在  其他
关注(0)|答案(1)|浏览(154)

据我所知,** Delphi 总是为动态数组**分配一个慷慨的空间,以避免当动态数组的大小增加时重新定位(例如使用SetLenghth())。然而,在许多情况下,当创建类时,只会出现一个SetLength,所以一旦数组被标注尺寸,它就可以被认为是一个 “恒定长度” 的数组。也就是说,绝对不需要为数组分配更大的空间。
那么,有没有指示,诡计等等。告诉 Delphi 这个数组实际上是一个“假的常量长度”数组,也就是说,它的长度应该以保守的方式设置?

ig9co6j1

ig9co6j11#

幸运的是,默认的动态数组分配行为完全符合我们的预期,如果它足够聪明的话:
1.第一个SetLength(a, n)分配只为n项腾出空间,没有多余的。
1.随后的阵列长度增加被优化以减少重定位(因此避免性能损失),甚至通过牺牲空间。
因此,不需要这样的指令,** Delphi **默认情况下会做我们期望的事情。

相关问题