c++ - 制作二维数组时出现运行时错误

标签 c++ runtime-error c++14

using namespace std;

int dp[1001][1001];

int main() {

  ...
}

在这种情况下,不存在运行时错误。

但是,

using namespace std;

int main() {
   string A, B;

   cin >> A >> B;

   int dp[1001][1001];

   ....
}

如果我编写这样的代码,则会出现运行时错误。 甚至 main 函数的第一行也不起作用。

你能告诉我为什么会发生这个错误吗?

感谢您阅读我的问题。

最佳答案

当你在main()之前声明一个变量时,它是全局变量,位于静态内存中。如果在 main() 中声明它,它就是一个本地变量,(实际上,尽管 C++ 标准没有强制要求)位于堆栈.总内存中只有一小部分分配给堆栈。如果您同意其大小,则会出现堆栈溢出。这就是您的情况,因为 int dp[1001][1001] 通常需要大约 4 MB 或 8 MB,具体取决于 sizeof(int)

关于c++ - 制作二维数组时出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64273418/

相关文章:

c++ - 在 C++ 中检测意外省略的维度

javascript - 使用 jscodeshift 添加表达式时,错误 {...} 与类型字符串不匹配

VBA 运行时错误 91。设置对象变量时出现问题

c++ - 防止 C++14 中的左值实例化

c++ - 为什么不应该将 auto&& 用于局部变量?

c++ - switch语句默认范围?

c++ - delete 如何处理指针常量?

c++ - 我如何使用堆栈但避免 C++ 中的堆栈溢出

android - 应用程序无响应 (ANR) 正在执行服务 android

c++ - 据我所知,下面的函数不是 constexpr,而是用 clang 和 g++ 编译的代码。我错过了什么?