Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在mpir中创建大型阵列_C_Arrays_Memory_Large Data - Fatal编程技术网

C 在mpir中创建大型阵列

C 在mpir中创建大型阵列,c,arrays,memory,large-data,C,Arrays,Memory,Large Data,对于mpir中的小数组和浮点数,我没有收到错误消息,但当我想要创建一个非常大的数组时。假设>100000000,我会收到以下错误消息: GNU MP:无法分配内存(大小=16) 按任意键继续 不幸的是,我需要2个大阵列。一个尺寸为100010000,另一个尺寸为1000100。这在windows 64位计算机上可能吗 有没有一种方法可以从内存中清除数组的一部分而不是整个数组(在MPIR上)来创建空间 您无法将那么多内存成功分配到一个数组中,因为数组的元素必须连续出现在内存中,并且堆的当前状态不太

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

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

不幸的是,我需要2个大阵列。一个尺寸为100010000,另一个尺寸为1000100。这在windows 64位计算机上可能吗


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

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

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

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

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