在堆栈上分配数组时出现运行时错误[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在堆栈上分配数组时出现运行时错误[重复]相关的知识,希望对你有一定的参考价值。

这个问题与以下内容完全相同:

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
", a[j][l]);
        }
      }
      for (j = 0; j < n; j++) {
        for (l = 0; l < m; l++) {

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

当我运行这个时,我总是得到一个运行时错误。任何人都可以建议我一个克服它的解决方案???我需要这个用于竞争性编程问题,其中ChessBoard可能有1000000000 * 1000000000个方格,我需要用它执行多个操作。

答案

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

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

在大多数系统上,限制介于64k和10mibyte之间。当然不是任何接近你试图做[] []的大小的地方。

您需要使用malloc来尝试分配内存。本地变量在运行时在堆栈上生成,堆栈内存不足,导致程序崩溃。

以上是关于在堆栈上分配数组时出现运行时错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

运行递归线性搜索时出现堆栈溢出错误

分配时出现分段错误[重复]

声明大数组时出现堆栈溢出异常

声明大数组时出现堆栈溢出异常

在片段java类中使用“this”和getLastSignedInAccount时出现错误[重复]

尝试声明大数组时出现分段错误和核心转储[重复]