C 在mpir中创建大型阵列
对于mpir中的小数组和浮点数,我没有收到错误消息,但当我想要创建一个非常大的数组时。假设>100000000,我会收到以下错误消息: GNU MP:无法分配内存(大小=16) 按任意键继续 不幸的是,我需要2个大阵列。一个尺寸为100010000,另一个尺寸为1000100。这在windows 64位计算机上可能吗C 在mpir中创建大型阵列,c,arrays,memory,large-data,C,Arrays,Memory,Large Data,对于mpir中的小数组和浮点数,我没有收到错误消息,但当我想要创建一个非常大的数组时。假设>100000000,我会收到以下错误消息: GNU MP:无法分配内存(大小=16) 按任意键继续 不幸的是,我需要2个大阵列。一个尺寸为100010000,另一个尺寸为1000100。这在windows 64位计算机上可能吗 有没有一种方法可以从内存中清除数组的一部分而不是整个数组(在MPIR上)来创建空间 您无法将那么多内存成功分配到一个数组中,因为数组的元素必须连续出现在内存中,并且堆的当前状态不太
有没有一种方法可以从内存中清除数组的一部分而不是整个数组(在MPIR上)来创建空间 您无法将那么多内存成功分配到一个数组中,因为数组的元素必须连续出现在内存中,并且堆的当前状态不太可能允许这样的情况 假设您谈论的是
float
数组,其中系统上的float
的大小可能为4
,那么您能够分配400MB内存的唯一可能方法是存在4亿个连续的内存地址未被占用
编辑:我不是说这是不可能的,我只是说这是不可靠的
编辑2:一个解决方案是将内存分块分配。您可以将其分配为100万个浮点数的组,而不是一个包含1亿个浮点数的数组。更有可能的是,您可以分配100块4MB的内存,而不是1块400MB的内存