在mpir中创建大型数组

时间:2013-03-27 18:51:38

标签: c arrays memory large-data

对于mpir中的小数组和浮点数,我没有得到任何错误消息,但是当我想创建一个非常大的数组时。说> 100,000,000我收到以下错误消息:

GNU MP:无法分配内存(size = 16) 按任意键继续 。 。

不幸的是我需要2个大型阵列。其中一个大小为100,010,000,另一个大小为1,000,100。这是否可以在Windows 64位机器上使用?

有没有办法从内存中清除数组的一部分而不是整个数组(在MPIR上)来创建空间?

1 个答案:

答案 0 :(得分:0)

你不能将这么多内存成功分配到一个数组中,因为数组的元素必须连续出现在内存中,并且堆的当前状态不太可能允许这样的内容。

假设您正在讨论系统float可能大小为float的{​​{1}}数组,那么您唯一可以分配400MB内存的方式是否存在未被占用的4亿个连续内存地址。

编辑:我不是说这是不可能的,我只是说这是不可靠的。

编辑2:解决方案是为您分配内存块。您可以将其分配为100万个浮点数,而不是一个包含1亿个浮点数的数组。你更有可能分配100块4MB而不是1块400MB。