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

那么应该用怎样的方法替代呢?... 那么应该用怎样的方法替代呢? 展开
 我来答
金色潜鸟
推荐于2017-12-16 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5484万
展开全部
你可以设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 动态分配数组和再分配数组(及时调节,增加和减少数组占用的空间)
百度网友6ade8b6
2013-05-08 · TA获得超过3084个赞
知道小有建树答主
回答量:2528
采纳率:0%
帮助的人:1691万
展开全部
你如果不是长时间需要该空间,可在需要的时候malloc一小块。用完free掉。如果是需要长时间使用,可以考虑使用链表实现。这种超巨型数组是非常不推荐使用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友83cdc1c
2013-05-08 · TA获得超过5788个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:807万
展开全部
在32位系统上,理论上内存访问空间最大也就是从0到0xffffffff(10进制4294967295),数组a的大小是100000×100000×4,已经超过4字节整型所能表达的范围。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
机道不知道
2013-05-08 · 超过32用户采纳过TA的回答
知道答主
回答量:102
采纳率:0%
帮助的人:60.4万
展开全部
4*100亿字节??!!!37.25G???!!!兄弟,你的数组逆天了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
b7995547
2013-05-08 · 超过12用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:27.1万
展开全部
莫非少年是传说中搞天文的四眼天鸡?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式