如何创建大小超过C ++限制的数组

时间:2012-02-23 16:57:56

标签: c++

我在这里有一点问题,我编写c ++代码来创建一个数组,但是当我想将数组大小设置为100,000,000或更多时,我得到了一个错误。

这是我的代码:

int i=0;
double *a = new double[n*n];

这部分对我的项目非常重要。

3 个答案:

答案 0 :(得分:1)

通常,失败的唯一原因是由于缺少内存/内存碎片/可用地址空间。也就是说,试图分配800MB的内存。当然,我不知道为什么你的系统的虚拟内存无法处理,但也许你分配了一堆其他东西。没关系。

您的替代方案是内存映射文件,稀疏数组等技巧,而不是显式的C风格数组。

答案 1 :(得分:1)

当你时,你需要一个100,000,000个元素的数组,你实际需要的是一个你以前从未听说过的不同数据结构。可能是哈希映射,也可能是稀疏矩阵。

如果您告诉我们您要解决的实际问题,我们可以提供更好的帮助。

答案 2 :(得分:0)

如果您没有足够的内存,则可能需要使用文件来存储数据并以较小的块进行处理。

不知道IMSL是否提供了您正在寻找的内容,但是,如果您想处理较小的块,您可能会设计一种算法,该算法可以使用这些小块调用IMSL函数,然后合并结果。例如,您可以通过组合子矩阵的乘法来进行矩阵乘法。