在堆栈上分配数组时出现运行时错误

Runtime Error while allocating an array on the stack

int main() {
      long long int n, m, j, l, a[1000000000][1000000000];
      int k, i;
      scanf("%lld", & n);
      scanf("%lld", & m);
      for (j = 0; j < n; j++) {
        for (l = 0; l < m; l++) {
          a[j][l] = 0;
          printf("%d\n", a[j][l]);
        }
      }
      for (j = 0; j < n; j++) {
        for (l = 0; l < m; l++) {

          printf("%d\n", a[j][l]);
        }
      }
      return 0;
    }

当我 运行 时,我总是得到 运行 时间 error.Can 任何人请给我建议一个解决方案来克服它???我需要这个来回答一个棋盘可能有 1000000000*1000000000 个方块的竞争性编程问题,我需要用它执行多个操作。

因为在大多数实现中,您不能创建那么大的局部变量。

你真的有 10000000000*10000000000 = 100000000000000000 字节的内存吗?

在大多数系统上,限制在 64k 到 10 兆字节之间。当然,在您尝试制作 [][].

大小附近的任何地方都不行

您需要使用 malloc 来尝试分配内存。局部变量是在 运行 时间内在堆栈上创建的,您 运行 堆栈内存不足,导致程序崩溃。