2

構造体の配列があり、配列の各要素を for ループ内の個別の pthread に渡すつもりです。

ここに私の構造体があります:

struct arrayData{
int *a;
int *b;
int up, low;
}

最初の構造体と malloc へのポインターを次に示します (ここで何が起こっているのかよくわかりません)。

struct arrayData * instance;
        instance = malloc(sizeof(struct arrayData)*n);

pthread_create への私の呼び出しは次のとおりです。

pthread_create( &thread[i], NULL, add, (void *)instance[i]);

そして、その行について、「ポインター型に変換できません」というメッセージが表示されます。

その行の何が問題になっている可能性がありますか?

4

2 に答える 2

8

最後のパラメーターで構造体をポインターに変換しようとしています。で構造体のアドレスを渡す必要があります&

pthread_create( &thread[i], NULL, add, &instance[i]);

jørgensenが述べたように、void *キャストは不要です。

于 2012-03-28T19:09:39.973 に答える
2

instanceは typestruct arrayData *であるため、instance[i]は typestruct arrayDataであり、ポインターではなく集約です。使用目的はおそらく

pthread_create(&thread[i], NULL, add, &instance[i]);

ところで、キャストは無意味です。

于 2012-03-28T19:11:20.133 に答える