[英]Why does my program crash when defining the two big arrays?
我目前有以下代码:
#define ARRAY_SIZE 1000000
#define CHILDS 2
typedef struct
{
char a[20];
int b;
} shared_data_type;
int main()
{
int i;
// I need 2 arrays and 1 variable of this type
shared_data_type v1[ARRAY_SIZE], v2[ARRAY_SIZE], aux;
srand((unsigned)time(NULL));
for (i = 0; i < ARRAY_SIZE; i++)
{
strcpy(v1[i].a, "RANDOM STRING");
v1[i].b = rand() % 50;
}
return 0;
}
但是如果我用这行代码运行程序: shared_data_type v1[ARRAY_SIZE], v2[ARRAY_SIZE], aux;
我在输出中收到此错误: make: *** [run] Segmentation fault (core dumped)
。
我究竟做错了什么?
尝试在系统内存而不是进程堆栈中分配数组:
#define ARRAY_SIZE 1000000
#define CHILDS 2
typedef struct
{
char a[20];
int b;
} shared_data_type;
int main()
{
int i;
// I need 2 arrays and 1 variable of this type
shared_data_type * v1, * v2, aux;
v1 = malloc(ARRAY_SIZE * sizeof(*v1);
v2 = malloc(ARRAY_SIZE * sizeof(*v2);
srand((unsigned)time(NULL));
for (i = 0; i < ARRAY_SIZE; i++)
{
strcpy(v1[i].a, "RANDOM STRING");
v1[i].b = rand() % 50;
}
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.