arrays - 当与 Delphi 中的 SetLength 一起使用时,动态数组的内存中有什么?

标签 arrays string delphi

我有一个动态数组myArr。当我们使用 SetLength 时,myArr 的内存中存储了什么?是“00”吗?还是未定义?

在本例中,

SetLengthmyArr 分配 16 字节内存。

myArr : array of byte;

SetLength(myArr, 16);

最佳答案

引自 Delphi 7 帮助,“对于长字符串或动态数组变量,SetLengthS 引用的字符串或数组重新分配为给定长度。现有角色 数组中的字符串或元素被保留,但新分配的空间的内容未定义。一个异常(exception)是当增加动态数组的长度时,其中的元素是必须初始化的类型(字符串、Variants、Variant 数组或包含此类类型的记录)。当S是必须初始化的动态类型数组时,新分配的空间将设置为0nil。”

根据我的观察,对于静态数组,未初始化的元素包含随机数据。对于动态数组,据我所知,从 Delphi 7 开始,未初始化的元素包含其 default nothing 值。但是,您不应该依赖这一事实,因为它是 SetLength 的实现细节。您应该遵循官方文档。

关于arrays - 当与 Delphi 中的 SetLength 一起使用时,动态数组的内存中有什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3984789/

相关文章:

javascript - 使用正则表达式查找模式并获得结果

delphi - Gethomepath 不适用于 iOS 5/OSxLion

python - python ctypes中的未知数组长度

java - C# 到 JAVA 代码等效(删除字符串中的多余空格)

c# - 不区分大小写的字符串搜索

html - Delphi 的 WebSocket 服务器实现

regex - Delphi 正则表达式的最大模式 "separation"?

java - 在Java中将字符串转换为字符串数组

javascript - 使用 ForEach 和 2 个数组来创建一个新对象

php - 我正在尝试搜索/迭代一个非常复杂的数组并提取特定值,但我不知道这样做的最佳途径