c - 二维数组的段错误

标签 c arrays

我想定义一个非常大的二维数组。但它给我段错误?

  #include <stdio.h>

  int main () {
       int i;
       int temp[4000][5000];
      for (i = 0; i < 5; i++)
      {
          printf ("Hello World\n");
      }
  }

谁能给我一些其他的建议?内存初始化有问题吗?提前致谢

最佳答案

您可以将整个表分配到一个数组中,但您将无法使用两个方括号访问带有索引的数组数据:

int * temp = malloc(4000*5000*sizeof(int));

要访问您之前编写的 temp[i][j] 元素 (i,j),现在您应该按以下方式计算索引:

temp[i*5000+j];

不要忘记释放分配给你的表的内存:

free(temp);

关于c - 二维数组的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19584758/

相关文章:

java - char数组的递归数组搜索

将等长的字符串复制到新的字符串数组

c - 变量没有正确递增

java - 使用 `+` 或 `-` 运算符打印可以给出给定数字的所有组合

c++ - 帮助理解函数和类模板之间的差异

java - Java 中从字符串到二维字符数组

ANSI C 中表达式的条件编译和编译时评估

c - 字符串数组中不同出现的次数

c - 在 C 中,结构体的数据成员如何用作同一结构体的成员所指向的函数的一部分?

c++ - 如何可视化这些没有出现的数字。 (C++)