C中的分段故障错误数组

时间:2018-08-22 07:55:21

标签: c arrays

我想编写一个程序,其中要初始化大小为987654321的整数数组,以仅存储1和0的值, 这是我的程序

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

int main(){
    int x,y,z;
    int limit = 987654321;
    int arr[limit];
    for (x = 0;x < limit;x++){
        printf("%d \n",arr[x]);
    }
    return 0;
}

但是它给出了分割错误

1 个答案:

答案 0 :(得分:1)

987654321对于本地变量肯定太大了。

如果需要具有该大小的动态大小的数组,则需要使用malloc,例如:

int limit = 987654321;
int *arr = malloc(limit * sizeof(*arr));
if (arr == NULL)
{ 
  ... display error message and quit
}
...
free(arr); // free it once you're dont with the array

顺便说一句,您是否知道假设平台上int的大小为4,则阵列会使用大约4 GB的内存?