首页 > 解决方案 > 使用c数组时堆栈溢出

问题描述

当我定义

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

我遇到堆栈溢出,但是当我添加静态关键字时

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

一切安好。

有什么不同?与动态数组相反,静态数组不是总是在堆栈上定义的吗?

标签: cmemory

解决方案


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

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


推荐阅读