这是我的代码
#include<stdio.h>
#define ROW 10000
#define COLUMN 10000
void hello(int arr[ROW][COLUMN]){
printf("hoho");
}
void main(){
int arr[ROW][COLUMN];
hello(arr);
}
现在,这给了我段错误。我的问题是,我知道在进行函数调用时,堆栈用于保存传递给函数的所有变量。那么这是操作系统的堆栈吗?即操作系统是否有专门为此设计的单独内存块?
还有,栈的大小是固定的吗?
如果我必须将这么大的值传递给我的函数怎么办?
最佳答案
操作系统的所有任务都有一个单独的堆栈。如果你能如此轻易地破坏操作系统内存,那就太糟糕了。
根据您的编译器,您通常有大约 1 MiB 的堆栈内存。如果您需要使用如此大量的内存,请使用 malloc
或 calloc
从堆中分配内存。
编辑
关于c - 在C中调用函数时,是否使用了操作系统的堆栈,堆栈的大小是否固定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16296138/