在堆栈上分配数组时发生运行时错误 intmain(){ long long int n、m、j、l、a[100000000][100000000]; int k,i; scanf(“%lld”、&n); scanf(“%lld”、&m); 对于(j=0;j

在堆栈上分配数组时发生运行时错误 intmain(){ long long int n、m、j、l、a[100000000][100000000]; int k,i; scanf(“%lld”、&n); scanf(“%lld”、&m); 对于(j=0;j,c,arrays,stack,runtime-error,long-integer,C,Arrays,Stack,Runtime Error,Long Integer,当我运行这个程序时,我总是会遇到运行时错误。有人能给我一个解决方案吗???我需要这个来解决一个竞争性编程问题,其中棋盘可能有1000000000*1000000000个正方形,我需要用它执行多个操作。因为在大多数实现中,您不能创建那么大的局部变量 你真的有1000000000*1000000000=10000000000000000字节的内存吗 在大多数系统上,限制在64k和10MB之间。当然,任何地方都不能接近您要制作的[]尺寸 您需要使用malloc来尝试分配内存。局部变量在运行时在堆栈上生

当我运行这个程序时,我总是会遇到运行时错误。有人能给我一个解决方案吗???我需要这个来解决一个竞争性编程问题,其中棋盘可能有1000000000*1000000000个正方形,我需要用它执行多个操作。

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

你真的有1000000000*1000000000=10000000000000000字节的内存吗

在大多数系统上,限制在64k和10MB之间。当然,任何地方都不能接近您要制作的[]尺寸


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

因为在大多数实现中,无法创建如此大的局部变量

你真的有1000000000*1000000000=10000000000000000字节的内存吗

在大多数系统上,限制在64k和10MB之间。当然,任何地方都不能接近您要制作的[]尺寸


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

我怀疑使用
malloc
是否有助于解决这种情况:)你永远不知道他可能有一台128位的计算机,地址空间为ram;-)我怀疑使用
malloc
是否有助于解决这个问题:)你永远不知道,也许他有一台128位的计算机,地址空间是ram;-)我有点懒得数零,但您似乎分配了至少400 PB的内存。这可能有点太多了。我有点懒得数零,但你似乎分配了至少400 PB的内存。那可能有点多。
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;
    }