我们有更多的内存空间用于静态变量吗?

use*_*933 1 c++ memory static

int dp[2009][2009]

static int dp[2009][2009];
Run Code Online (Sandbox Code Playgroud)

我制作了一个c ++程序,其中我声明了一个arry作为
int dp [2000] [2000]该程序由于非常大的内存分配而停止工作.当我宣布它为静态
int dp [2009] [2009]时,该程序运行良好.什么原因?

Ker*_* SB 5

具有自动存储的变量只能使用依赖于实现的小空间("堆栈").相比之下,具有静态存储持续时间的变量可以使用更大量的空间,主要受全局机器约束的约束.

不幸的是,语言中没有任何机制可以告诉您自动变量有多少空间可用.这是一个依赖于实现的限制,当你超越它时会产生不确定的行为,但是你无法知道限制是什么或剩下多少......