关于一维数组的问题
我想定义一个一维数组,但当我定义的元素个数太大时却出现错误,大家可以指导下我吗?
即我定义一个数组a
int a[786432]; 时,出现错误
但当我把786432改为小于200000的,就可以了,为什么个数只可以定这么少?谁有办法?我一定要定义那么大的,至少都要有262144.
[解决办法]
int a[786432];
这样是在栈中建立数组, 而一个程序默认的栈的大小是有限制的. 比如
VC编译的程序默认的栈的大小是1M, 1M = 250k * sizeof(int), 因此最大
也就能在栈中分配250000大小的数组, 如果考虑到其他局部变量也需要栈
内存, 实际能建立的数组大小就要比250000小(比如你程序中的200000).
解决办法:
1. 编译前, 修改默认栈的大小. 每个编译器的具体操作方法可能不同,就不说了.
2. 在堆上动态创建数组:
C中如下:
int nNumberOfInts = 786432; // 可在程序运行时修改大小
int* a = (int*)malloc(nNumberOfInts*sizeof(int));
//现在a就可以使用了, 实际就是 a[786432]
.....................
//使用完后, 调用free释放内存
free(a);
[解决办法]
运行不行?
#include <stdio.h>
int a[786432]={0};
int main()
{
for(int j=0;j <786432;j++)
a[j]=j;
for (int i=0;i <786432;i++)
printf( "%d ",a[i]);
return 0;
}
我这个怎么可以运行