我有一个动态数组myArr
。当我们使用 SetLength
时,myArr
的内存中存储了什么?是“00”吗?还是未定义?
SetLength
为 myArr
分配 16 字节内存。
myArr : array of byte;
SetLength(myArr, 16);
最佳答案
引自 Delphi 7 帮助,“对于长字符串或动态数组变量,SetLength
将 S 引用的字符串或数组重新分配为给定长度。现有角色
数组中的字符串或元素被保留,但新分配的空间的内容未定义。一个异常(exception)是当增加动态数组的长度时,其中的元素是必须初始化的类型(字符串、Variants、Variant 数组或包含此类类型的记录)。当S是必须初始化的动态类型数组时,新分配的空间将设置为0
或nil
。”
根据我的观察,对于静态数组,未初始化的元素包含随机数据。对于动态数组,据我所知,从 Delphi 7 开始,未初始化的元素包含其 default nothing 值。但是,您不应该依赖这一事实,因为它是 SetLength
的实现细节。您应该遵循官方文档。
关于arrays - 当与 Delphi 中的 SetLength 一起使用时,动态数组的内存中有什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3984789/