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

时间:2014-06-02 13:57:04

标签: c++ memory static

int dp[2009][2009]

static int dp[2009][2009];

我制作了一个c ++程序,其中我宣称arry为
     int dp [2000] [2000] 由于内存分配很大,程序停止工作。当我宣布它为静态时      int dp [2009] [2009],该计划运作良好。 这是什么原因??

1 个答案:

答案 0 :(得分:5)

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

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