pthread_create导致分段错误

时间:2012-06-28 17:06:31

标签: c linux gcc segmentation-fault

我的程序包含以下代码。

pthread_t PThreadTable[32];

 for (i=1; i<P; i++) // Checked with P = 4 
    {
        long    i, Error;

        printf( "pthread_create %d!\n", i );
        Error = pthread_create(&PThreadTable[i], NULL, 
          (void * (*)(void *))(SlaveStart), NULL);
        if (Error != 0) 
        {
            printf("Error in pthread_create().\n");
            exit(-1);
        }
    }

 SlaveStart();

代码在调用pthread_create时提供了细分错误(通过gdbvalgrind检查)。为什么这样?

1 个答案:

答案 0 :(得分:8)

因为你在循环中重新声明了变量i。循环中的变量正在使用,它包含垃圾值。这就是为什么表达式&PThreadTable[i]指向错误的地址并且您得到了分段错误。