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