2013-10-20 126 views
0

首先,我不知道如何设置一个整数指针到一个数组。其次,这是设置pthread_create参数的正确方法吗?设置整数指针到一个整数数组并传递参数到pthread_create

这是我的参数的结构:

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

我创建的指针的结构:

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); 
+0

请不要说“这行不通”无说*什么*不起作用。这完全没有帮助。 –

回答

1

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

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

然后你就可以正确地分配:

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

看起来您并没有初始化arguments->arr的值以指向有效的int

相关问题