在 mpir 中创建大型数组

标签 c arrays memory large-data

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

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

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

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

最佳答案

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

假设您正在谈论 float 数组,其中系统上的 float 的大小可能为 4,这是唯一可能的方法如果存在 4 亿个连续内存地址未被占用,则您能够分配 400MB 内存。

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

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

关于在 mpir 中创建大型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15667065/

相关文章:

c - 错误: expected specifier-qualifier-list before

c++ - C 和 C++ 中 sizeof 运算符的不同输出

c++ - void指针的内容怎么写?

ios - iOS 8.3 iPhone 6 Plus 虚拟内存超过1.5GB 容易死机

c - BeagleBone Black UART 软件 FIFO 大小?

c - 关于如何将 Quicktime.framework 与 libvidcap 链接

arrays - 在哈希数组中添加相同键的值

javascript - 遍历包含不同长度数组的二维数组行

javascript - 在 $scope 对象数组上使用 .push() 不会将推送的对象添加到数组中

python - 如何实现用于测试的内存密集型 python 脚本