永发信息网

C中如何定义长度为1000000的整型数组啊

答案:6  悬赏:20  手机版
解决时间 2021-11-10 19:17
C中如何定义长度为1000000的整型数组啊
最佳答案
int n[1000000];这样肯定是不行的,因为这样定义的数组用的是栈内存,系统默认值为最大1Mb,一个int型占4字节这样最大可以申请1024*1024/4=264144个,如果考虑到系统自身的占用最大值约为25000个。int *p=(int *)malloc(1000000*sizeof(int));,这样用的是堆内存,只要你内存有那么多的连续空间就可以;例子如下:
#include
#include

int main()
{
int *p=(int *)malloc(1000000*sizeof(int));
//int p[1000000];
int i=0;
for(;i<1000000;i++)
printf("%d\n",p[i]=i);
free(p);
return 0;
}
全部回答
目前的机子做不到,你也用不到这么大的数组,一定有其它方法可以来替代的,比如链表什么的。
啥叫长度1000000的整型数组?是指有1000000个整型元素的数组呢?还是长度1000000字节长度的数组?
如果是1000000整型元素的数组:
int S[1000000]; //即可
如果是字节长度为1000000的数组:
int S[1000000/4]; //即可。。。
现在的C语言都是32位线性地址的编译器了。。。支持超过64KB大小的数组。。。
如果你用的是DOS下的老版本的C语言编译器,那就复杂了。。。首先要使用支持EMS或XMS的库,然后使用库函数分配内存。。。一般都是用DOS4GW的库。。。或者标准的XMS库。。。然后就用指针来模拟数组。。。搞个64K大小的数组,然后用来回映射扩展内存中的区段。。。总之很复杂。。。。而且是很多年前的东东了。。。。。。当年好像做过一个。。。现在基本都忘得差不多了。。。连资料好像都没了。。。只有一个大体的思路。。
直接定义就是了啊,只要你的内存有那么多连续的空间就行!
可以使用malloc申请,也可以定义成全局变量数组。
临时变量数组由于使用栈区,往往溢出。
这个没有办法了,只能是开空间,用 malloc来做,
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
小博士托管班(包头九原区)地址在哪,我要去那
"那份不一样的真情"为题一篇作文,500字,小学
舟山石化怎么样?待遇发展等,请详细些。
我有一枚真书光背靖康通宝和一枚顺治通宝后背
请问侧着睡觉耳朵会疼正常吗
笔记本电脑玩游戏 玩会就黑屏 不过游戏还在运
PC透明原料刚性与PC加纤相比
难道没人觉得《爱情买卖》很难听吗
陕西有哪些值得去的景点?
最强弃少为何被封导致烂尾?
飞车里的小兔仙和兔爷儿各有什么用,离线多少
俄罗斯海岸线是世界最长的,为什么港口却稀少
各位,怎么能查看自己的店铺是不是被隐形降权
想16日抚顺出发到大连三日游两个人有团吗?
有一款网页游戏以笑傲江湖人物的是什么游戏
推荐资讯
开车自北京东六环去山东东营孤岛路线
终于不再矜持的李阿姨
企业只是招聘,为什么要花重金聘请猎头为其招
I loathe to give up是什么意思
鹤壁心理咨询师培训哪个好
建筑内部装修防火施工及验收规范gb50352-2005
五年级的奥数,求解!谢谢 1/1x4+1/4
Excipient QSP 是什么意思?
2016年12月16号加180天等于几号
南平的行政区划
上煎下烤燃气炉,制造锅盔烤箱
温度3℃比-7℃高______;温度-8℃比-2℃低___
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?