0

私は私のCプログラムで問題を抱えています。複数のスレッドから配列に挿入しようとすると、ランダムに (後で説明します) Abort Traps と Seg が実行され続けます。障害。

ランダムとは、完了するまで実行されることもあれば、Double Free を取得することもあれば、Seg を取得することもあります。障害。

void insertIntoFinalArray(char * string) {
    sem_wait(&insert);
    printf("%d\n", sem_getvalue(&insert, 0));
    if (finalarray == NULL) finalarray = (char **) malloc(sizeof(char *));
    else finalarray = (char **) realloc(finalarray, ((size_final + 1) * sizeof(char *)));

    finalarray[size_final] = (char *) malloc(sizeof(string) + 1);
    strcpy(finalarray[size_final], string);
    //printf("%s\n", finalarray[size_final]);
    size_final++;
    sem_post(&insert);
}

final 配列はグローバル変数として宣言されていますchar ** finalarray;

4

0 に答える 0