0

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

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

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

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

4

1 回答 1

0

您无法成功地将那么多内存分配到一个数组中,因为数组的元素必须在内存中连续出现,而且您的堆的当前状态不太可能允许这样的事情。

假设您正在讨论系统上 a 的大小可能为 的float数组,那么您能够分配 400MB 内存的唯一可能方法是存在 4 亿个未占用的连续内存地址。float4

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

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

于 2013-03-27T19:05:56.257 回答