Visual Studio 2010 年 C++ 中外部数组允许的最大数组大小

Maximum array size allowed for an extern array in C++ on Visual Studio 2010

我昨天问了一个问题 here 试图理解使用通过外部数组指定的大型查找表的任何潜在问题。这些表都用于一组非参数模型,这些模型必须构建到 DLL 中供我们的客户使用,其中 DLL 预计以 1000Hz 左右的频率进行计算。

现在在我的项目中,外部数组查找表的分类总共存储了大约 6620 万个浮点数,因此总共大约有 265MB 的数据。包含所有这些表的项目可以正常编译,但无法完成 linking。但是,当我在外部数组中存储的数据少于大约 180MB 时,项目编译并且 link 正常。

自从我昨天 post 以来,我收集了大量证据表明我的项目正在达到我可以存储在外部数组中的数据量的限制。一组 extern arrays/variables 中可以存储多少数据有实际限制吗? linker 中是否存在可能因外部数组中的数据过多而中断的错误?如果有一些限制,是否有办法将限制提高到更高或以某种方式解决此问题?

注意我的项目是Win32项目。

编辑

请注意,有关该问题的更多信息(如出现的错误)位于我的 link post 开头。以下是 VS 2010 中弹出窗口和消息的一些屏幕截图:

对于这么大的数组,您应该使用动态内存而不是数组。在您的情况下,数组分配在堆栈或数据段上。事实上,任何大于 100KB 左右的东西都不会被分配为数组。它会引起各种各样的麻烦。即使您确实获得了该程序 运行,也可能会出现一些严重的性能损失。