C中如何定义长度为1000000的整型数组啊
答案:6 悬赏:20 手机版
解决时间 2021-11-10 19:17
- 提问者网友:聂風
- 2021-11-10 05:36
C中如何定义长度为1000000的整型数组啊
最佳答案
- 五星知识达人网友:往事埋风中
- 2021-11-10 05:53
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;
}
#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;
}
全部回答
- 1楼网友:酒者煙囻
- 2021-11-10 09:53
目前的机子做不到,你也用不到这么大的数组,一定有其它方法可以来替代的,比如链表什么的。
- 2楼网友:山有枢
- 2021-11-10 08:44
啥叫长度1000000的整型数组?是指有1000000个整型元素的数组呢?还是长度1000000字节长度的数组?
如果是1000000整型元素的数组:
int S[1000000]; //即可
如果是字节长度为1000000的数组:
int S[1000000/4]; //即可。。。
现在的C语言都是32位线性地址的编译器了。。。支持超过64KB大小的数组。。。
如果你用的是DOS下的老版本的C语言编译器,那就复杂了。。。首先要使用支持EMS或XMS的库,然后使用库函数分配内存。。。一般都是用DOS4GW的库。。。或者标准的XMS库。。。然后就用指针来模拟数组。。。搞个64K大小的数组,然后用来回映射扩展内存中的区段。。。总之很复杂。。。。而且是很多年前的东东了。。。。。。当年好像做过一个。。。现在基本都忘得差不多了。。。连资料好像都没了。。。只有一个大体的思路。。
如果是1000000整型元素的数组:
int S[1000000]; //即可
如果是字节长度为1000000的数组:
int S[1000000/4]; //即可。。。
现在的C语言都是32位线性地址的编译器了。。。支持超过64KB大小的数组。。。
如果你用的是DOS下的老版本的C语言编译器,那就复杂了。。。首先要使用支持EMS或XMS的库,然后使用库函数分配内存。。。一般都是用DOS4GW的库。。。或者标准的XMS库。。。然后就用指针来模拟数组。。。搞个64K大小的数组,然后用来回映射扩展内存中的区段。。。总之很复杂。。。。而且是很多年前的东东了。。。。。。当年好像做过一个。。。现在基本都忘得差不多了。。。连资料好像都没了。。。只有一个大体的思路。。
- 3楼网友:由着我着迷
- 2021-11-10 07:13
直接定义就是了啊,只要你的内存有那么多连续的空间就行!
- 4楼网友:独行浪子会拥风
- 2021-11-10 06:39
可以使用malloc申请,也可以定义成全局变量数组。
临时变量数组由于使用栈区,往往溢出。
临时变量数组由于使用栈区,往往溢出。
- 5楼网友:话散在刀尖上
- 2021-11-10 06:13
这个没有办法了,只能是开空间,用 malloc来做,
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯