设置一个指向整数数组的整数指针并将参数传递给pthread_create

时间:2013-10-20 22:16:35

标签: c arrays multithreading pointers

首先,我不确定如何设置一个指向数组的整数指针。其次,这是设置pthread_create参数的正确方法吗?

这是我的论点struct:

typedef struct args {
    int *arr;
    int number;
} args;

我创建了一个指向struct的指针:

args *arguments = (args *)malloc(sizeof(args));

我需要将args.arr的每个元素设置为argv(命令行参数)作为整数。我不太明白如何设置args.arr的每个元素:

for(i = 1; i < argc; i++)
    arguments->arr[i] = atoi(argv[i]); // Edit: Segmentation fault on this line

我创建了一个线程数组:

pthread_t threads[4];

..并将参数传递给每个函数调用:

for(i = 0; i < 4; i++)
    pthread_create(&threads[i], NULL, func, arguments);

2 个答案:

答案 0 :(得分:1)

您似乎没有初始化arguments->arr的值以指向有效的int

答案 1 :(得分:1)

arr是一个int指针,所以你需要先分配它:

arguments->arr = malloc(argc * sizeof(int));

然后你可以正确分配:

for(i = 1; i < argc; i++)
    arguments->arr[i] = atoi(argv[i]);