int dp[2009][2009]
static int dp[2009][2009];
我制作了一个c ++程序,其中我宣称arry为
int dp [2000] [2000]
由于内存分配很大,程序停止工作。当我宣布它为静态时
int dp [2009] [2009],该计划运作良好。
这是什么原因??
答案 0 :(得分:5)
具有自动存储功能的变量只能使用与实现相关的小空间("堆栈")。相比之下,具有静态存储持续时间的变量可以使用更大的空间量,主要受全局机器约束的约束。
不幸的是,语言中没有任何机制可以告诉您自动变量有多少空间可用。它是一个依赖于实现的限制,当你超越它时会产生不确定的行为,但你不知道限制是什么或剩下多少......