我目前的问题与Max length for a dynamic array in Delphi?有关。在2009年64位编译器不可用时,问了这个问题。我准备迁移到Delphi XE2(或任何可供购买的版本)或Lazarus,因为我需要64位支持。
我想知道在Delphi 64bit中改变了什么(与动态数组最大长度有关)。我现在可以创建更大的阵列吗?
答案 0 :(得分:6)
在现代Delphi中,动态数组长度为NativeInt
。
这意味着动态数组在理论上限制为32位代码中的32位长度和64位代码中的64位长度。当然,实际考虑意味着限制稍低。但是,可以在64位代码中分配具有2个以上 32 元素的动态数组。
另一方面,对于所有体系结构,字符串的长度限制为32位。据我所知,其原因在于字符串根本不会包含如此大量的文本。许多文本支持字符串依赖的库函数使用32位长度。数组用于更通用的计算,而32位限制会大大降低它们在64位下的效用。