对于mpir中的小数组和浮点数,我没有得到任何错误消息,但是当我想创建一个非常大的数组时。说> 100,000,000我收到以下错误消息:
GNU MP:无法分配内存(size = 16) 按任意键继续 。 。
不幸的是我需要2个大型阵列。其中一个大小为100,010,000,另一个大小为1,000,100。这是否可以在Windows 64位机器上使用?
有没有办法从内存中清除数组的一部分而不是整个数组(在MPIR上)来创建空间?
答案 0 :(得分:0)
你不能将这么多内存成功分配到一个数组中,因为数组的元素必须连续出现在内存中,并且堆的当前状态不太可能允许这样的内容。
假设您正在讨论系统float
可能大小为float
的{{1}}数组,那么您唯一可以分配400MB内存的方式是否存在未被占用的4亿个连续内存地址。
编辑:我不是说这是不可能的,我只是说这是不可靠的。
编辑2:解决方案是为您分配内存块。您可以将其分配为100万个浮点数,而不是一个包含1亿个浮点数的数组。你更有可能分配100块4MB而不是1块400MB。