如何使int val [100000000]数组?

时间:2011-04-27 23:08:26

标签: c segmentation-fault

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main() {
  int val[100000000] ;
  printf("%d", CHAR_BIT);
}

执行代码时,会出现“段错误”错误。我想这个错误意味着堆区域没有足够的内存。

3 个答案:

答案 0 :(得分:11)

不,这不是问题,而是堆栈。你已经声明了一个局部变量,并且局部变量存在于堆栈中。

请尝试使用int *val = malloc(sizeof(int)*100000000);。您可以通过检查是否(val != NULL)来测试是否成功。

(当然,当你完成记忆后,你需要记得打电话给free(val)。)

答案 1 :(得分:6)

在堆栈上分配数组。请尝试使用malloc堆。

答案 2 :(得分:2)

默认情况下,线程的堆栈大小可能约为2兆字节。你试图在堆栈上分配更多,这会导致错误。

根据您的平台,您可以使用--stack选项更改默认堆栈大小分配到ld,但不建议这样做。在您的情况下,最好使用malloc()。堆栈通常不应用于存储大型数据结构。