gpt4 book ai didi

c - 在C中调用函数时,是否使用了操作系统的堆栈,堆栈的大小是否固定?

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:20 24 4
gpt4 key购买 nike

这是我的代码

#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 的堆栈内存。如果您需要使用如此大量的内存,请使用 malloccalloc 从堆中分配内存。

编辑

This是 Windows 内存布局的样子。
Here是关于这个的文章。

关于c - 在C中调用函数时,是否使用了操作系统的堆栈,堆栈的大小是否固定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16296138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com