在Delphi中,如果使用setlength来增加或减少动态数组的大小,它会保留数组的原始内容吗?
一维或多维数组是否相同?
到现在为止,我一直认为当扩大大小时它将保留旧数据,但是不确定是否总是这样,还是我一直很幸运。
最佳答案
在Delphi中,如果使用SetLength
来增加或减少动态数组的大小,它是否保留数组的原始内容?
是。
一维或多维数组是否相同?
是。请记住,多维数组仅是元素类型为数组的一维数组。因此,对于一维数组,您所知道的适用于多维数组。
documentation确实涵盖了这一点:
对于动态数组变量,SetLength将S引用的数组重新分配给给定长度。保留阵列中的现有元素,并将新分配的空间设置为0或nil。对于多维动态数组,SetLength可以使用多个长度参数(最多为数组维数)。每个参数指定沿特定维度的元素数量。