【发布时间】:2014-04-09 13:56:25
【问题描述】:
我当前的问题与Max length for a dynamic array in Delphi? 有关。这个问题是在 2009 年 64 位编译器不可用时提出的。我正准备迁移到 Delphi XE2(或任何不可购买的版本)或 Lazarus,因为我需要 64 位支持。
我想知道 Delphi 64 位发生了什么变化(与动态数组最大长度有关)。我现在可以创建更大的数组吗?
【问题讨论】:
标签: delphi
我当前的问题与Max length for a dynamic array in Delphi? 有关。这个问题是在 2009 年 64 位编译器不可用时提出的。我正准备迁移到 Delphi XE2(或任何不可购买的版本)或 Lazarus,因为我需要 64 位支持。
我想知道 Delphi 64 位发生了什么变化(与动态数组最大长度有关)。我现在可以创建更大的数组吗?
【问题讨论】:
标签: delphi
在现代 Delphi 中,动态数组长度为 NativeInt。
这意味着动态数组在理论上限制为 32 位代码中的 32 位长度和 64 位代码中的 64 位长度。当然,实际考虑意味着限制要低一些。但是,可以在 64 位代码中分配具有超过 232 个元素的动态数组。
另一方面,对于所有体系结构,字符串的长度都受到 32 位的限制。据我了解,原因是根本不希望字符串包含如此大量的文本。并且字符串所依赖的许多文本支持库函数都使用 32 位长度。而数组用于更通用的计算,32 位的限制会大大降低它们在 64 位以下的效用。
【讨论】: