如何使int val [100000000]数组?

web*_*oon 1 c segmentation-fault

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

int main() {
  int val[100000000] ;
  printf("%d", CHAR_BIT);
}
Run Code Online (Sandbox Code Playgroud)

当我执行代码时,它会发生"段错误"错误.我想这个错误意味着堆区域没有足够的内存.

Oli*_*rth 11

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

试试吧int *val = malloc(sizeof(int)*100000000);.您可以通过检查是否成功来测试是否成功(val != NULL).

(当然,free(val)当你完成记忆时,你需要记得打电话.)


alt*_*ive 6

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