在Delphi中,如果你将setlength设置为增量或减少动态数组的大小,它是否会保留数组的原始内容?
单个或多维数组是否相同?
到目前为止,我总是假设它会在放大尺寸时保留旧数据,但不确定它是否总是这样或者我一直都很幸运。
答案 0 :(得分:5)
在Delphi中,如果使用
SetLength
增加或减小动态数组的大小,它是否会保留数组的原始内容?
是
单维或多维数组是否相同?
是。请记住,多维数组只不过是一个单元数组,其元素类型是一个数组。因此,您对单维数组的了解适用于多维数组。
documentation确实涵盖了这一点:
对于动态数组变量,SetLength将S引用的数组重新分配给给定的长度。保留数组中的现有元素,并将新分配的空间设置为0或nil。对于多维动态数组,SetLength可能需要多个长度参数(最多为数组维数)。每个参数指定沿特定维度的元素数量。