【问题标题】:The largest size of 2-D array in C [duplicate]C中二维数组的最大尺寸[重复]
【发布时间】:2014-05-05 12:50:13
【问题描述】:

在我的 C 程序中,当我使用这样的数组时

int a[100000][100000];

我遇到分段错误。现在,如果我使用的数组大小小于 1000 * 1000 ,就像这样

int a[1000][1000];

我没有遇到任何问题。在我的程序中,我需要使用 10^5 * 10^5 数组。我该怎么做才能解决它。

【问题讨论】:

  • malloc动态分配它。通过静态声明它,您可以使用堆栈,它具有堆(用于动态分配)没有的最大大小。
  • 哦,你导致堆栈溢出
  • @devnull 我知道你在那里做了什么! :D
  • 分配一个 10GB 的数组可能不是最好的主意...
  • 你真的真的在任何时候都需要这么多的int吗?

标签: c arrays multidimensional-array segmentation-fault


【解决方案1】:

使用malloc 动态分配它。通过静态声明它,您可以使用堆栈,它具有堆(用于动态分配)没有的最大大小。

int *pointer = malloc (sizeof (*pointer) * (100000*100000));

然后,要访问它,请使用索引来表示 xy 坐标。

【讨论】:

  • 我需要将它用作数组的索引。我该怎么做?
  • @jahan: pointer[0][0]pointer[0] 会给你一个 int...
  • @jahan 有 xy 的变量。使用int valueToUse = *(pointer+(x*100000)+y)访问。
  • @jahan 由于问题已关闭,因此无法添加,但指向int 的指针可能是可行的方法。
  • @jahan 你不能,你至少需要 100 个代表。但约阿希姆可以,然后邀请你。
猜你喜欢
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多