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