C语言,如果我要定义这样一个数组:int a[100000][100000],那么系统会报错,应该是超出可用空间,

那么应该用怎样的方法替代呢?
2024年11月22日 09:07
有5个网友回答
网友(1):

你可以设a[][]数组是全局量,就算有警告性错误,仍然可以凑合着用。
例如,前友我得到超界信息,程序仍然可跑起来。
#include
#include

int a[100000][100000];
main(){
int i,j;
for (i=99990;i<99999;i++) a[i][i]=i;
for (i=99990;i<99999;i++) printf("%d\n",a[i][i]);
}

当然,最好不要声明这么大数组。
例如,处理图像时,一行一行处理手迹,不要整幅处理,那就节省了。
再例如,暂时不时用的数据毕悔并可以存到盘上,大量的数据分批处理,用盘的读写,倒进倒出数据。
可利用 realloc 动态分配数组和再分配数组(及时调节,增加和减少数组占用的空间)

网友(2):

你如果不是长时举桐间需要该空间,可在需要的时候malloc一小块。用完free掉。如果是需要长时间使用,可以考搜迅虑使用链表实现。这种超巨型数组是非常不推荐世答此使用的。

网友(3):

在32位系统上,理论上内存访问空间最大也就是从0到磨销0xffffffff(10进制4294967295),数组a的渣游谈大小是100000×100000×4,已经超过4字节整型所能表达的范围如碰。

网友(4):

4*100亿字节??!!!37.25G???!!!兄弟,你的数组逆天了

网友(5):

莫非少年是传说中搞天文的四眼天鸡?