c - 使用 c 数组时堆栈溢出

标签 c memory

当我定义

void tfooo(){
int arr[SOME_LARGE_NUMBER];
// some code here
}

我得到堆栈溢出,但是当我添加 static 关键字时

void tfooo(){
static int arr[SOME_LARGE_NUMBER];
// some code here
}

一切都很好。

有什么区别?相对于动态数组,静态数组不是总是在堆栈上定义的吗?

最佳答案

通常情况下,声明为 automatic 的对象分配在堆栈(相对较小)上,而声明为 static 的对象分配在其他地方。

注意,这取决于您的机器和编译器。

关于c - 使用 c 数组时堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50573999/

相关文章:

c - 在 C 循环中为变量和 fprintf 赋值

C算法和代码反馈和建议

条件编译#ifdef

c - 字符串未正确存储在结构中

python - 使用大量内存将类定义为枚举

c - 运行存储在动态允许的内存中的 shellcode

openCL 内核中的复杂结构

c - 程序在打印字符数组后总是缩进?

c - 内存分配器建议

c - C 中的内存错误,没有编译器错误