对于mpir中的小数组和浮点数,我没有收到错误消息,但是当我想要创建一个非常大的数组时。假设>100,000,000,我得到以下错误消息:
GNU :无法分配内存(size=16)按任意键继续。。。
不幸的是,我需要2个大的数组。一个是100,010,000号,另一个是1,000,100号。这在windows 64位机器上是可能的吗?
有没有一种方法可以从内存中清除部分数组,而不是整个数组(在MPIR上)来创建空间?
发布于 2013-03-28 03:05:56
您不能成功地将那么多内存分配到一个数组中,因为数组的元素必须在内存中连续出现,而堆的当前状态不太可能允许这样的情况。
假设您讨论的是float阵列,其中系统上的float可能具有4大小,那么能够分配400MB内存的唯一可能方法就是存在4亿个未被占用的连续内存地址。
编辑:我并不是说这是不可能的,我只是说它不可靠。
edit 2:一个解决方案是让你以块为单位分配内存。您可以将其分配为每组一百万个浮点数,而不是一个包含一亿个浮点数的数组。您更有可能分配100个4MB的块,而不是1个400MB的块。
https://stackoverflow.com/questions/15667065
复制相似问题