在pthread_create造成分段错误(pthread_create causing segme

2019-09-18 17:15发布

我的程序包含下面的代码。

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 )。 为什么这样?

Answer 1:

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



文章来源: pthread_create causing segmentation fault