繁体   English   中英

为什么我的程序在定义两个大数组时会崩溃?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM