在Delphi中,如果使用setlength来增加或减少动态数组的大小,它会保留数组的原始内容吗?

一维或多维数组是否相同?

到现在为止,我一直认为当扩大大小时它将保留旧数据,但是不确定是否总是这样,还是我一直很幸运。

最佳答案

在Delphi中,如果使用SetLength来增加或减少动态数组的大小,它是否保留数组的原始内容?


是。


一维或多维数组是否相同?


是。请记住,多维数组仅是元素类型为数组的一维数组。因此,对于一维数组,您所知道的适用于多维数组。



documentation确实涵盖了这一点:


对于动态数组变量,SetLength将S引用的数组重新分配给给定长度。保留阵列中的现有元素,并将新分配的空间设置为0或nil。对于多维动态数组,SetLength可以使用多个长度参数(最多为数组维数)。每个参数指定沿特定维度的元素数量。

10-04 15:38
查看更多