VB6阵列的最大大小


VB6 Maximum Size of an Array

尊敬的StackOverflow用户!

我最近遇到了解决VB6问题的不寻常需求。我开发了一个应用程序,需要将大量数据临时存储到内存中。由于班级和班级成员讨论了更多的资源,而更重要的是需要更多的时间来卸载,因此我想到了使用数组的想法。但是,似乎无法使用计算机上的所有可用RAM。任何人都可以给我一个解决方法的想法吗?

谢谢!


VB6中的数组大小限制是有符号32位整数或2,147,483,647个元素的最大值。

这实际上应该足以覆盖32位程序的完整地址空间,但这不太可能使用运行64位OS的现代计算机的完整RAM分配。

您是否考虑过用支持64位地址空间的另一种语言编写此处理步骤,而只是从VB6程序中执行该程序?

我实际上遇到了VB3的相同问题,它只允许2 ^ 15-1个元素大的数组,这确实是一个阻力-少于33,000个元素使许多系统的内存排序不切实际。


这取决于您所说的"计算机上的所有RAM"的含义。如果您使用的是32位VB6编译器,则只能使用2G RAM作为标准,因为这是VB6一次可寻址的最大内存量。使用EDITBIN.EXE可能会在/ 3G Windows或Win64机器上破解可执行文件以利用3G,但是如果它起作用我会感到惊讶。

您最好的选择是将数据写入临时文件。您应该使用WinFile调用CreateFile()/ ReadFile()进行文件访问,因为VB6在文件大小上具有相同的2G限制。