2013-10-20 55 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

相關問題