我正在处理一个应用程序,如果输入的数据有三种可能的大小:
问题是我无法分配大型数组。似乎不接受超过5000的尺寸。
执行以下操作时出现运行时错误:
long size=1000;
char ch;
int arr[size];
ch=getch();
if(ch==..)
size=...;
1000和5000的尺寸似乎工作正常,但我怎样才能以这种方式制作500k的数组?
答案 0 :(得分:9)
您可以在堆上分配这么大的数组:
int *arr;
arr = malloc (sizeof(int) * 500000);
不要忘记检查分配是否成功(如果不成功 - malloc返回NULL)。
正如pmg所提到的 - 由于这个数组不在堆栈中,所以一旦你完成它就必须free
。
答案 1 :(得分:8)
你的堆栈无法容纳那么多数据。您必须在堆上分配大数组,如下所示:
int *array = malloc (sizeof(int)*size);
正如pmg指出的那样,记得在你完成后释放你的记忆。
free(array);
答案 2 :(得分:3)
它对于堆栈来说太大了。相反,您需要使用malloc在堆上分配它。