双人免费/中止陷阱/段。故障烦恼

时间:2013-10-10 18:31:52

标签: c segmentation-fault

我的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;

0 个答案:

没有答案