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

那么应该用怎样的方法替代呢?

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

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 动态分配数组和再分配数组(及时调节,增加和减少数组占用的空间)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-08
你如果不是长时间需要该空间,可在需要的时候malloc一小块。用完free掉。如果是需要长时间使用,可以考虑使用链表实现。这种超巨型数组是非常不推荐使用的。
第2个回答  2013-05-08
在32位系统上,理论上内存访问空间最大也就是从0到0xffffffff(10进制4294967295),数组a的大小是100000×100000×4,已经超过4字节整型所能表达的范围。
第3个回答  2013-05-08
4*100亿字节??!!!37.25G???!!!兄弟,你的数组逆天了
第4个回答  2013-05-08
莫非少年是传说中搞天文的四眼天鸡?
相似回答