pthread_create导致分段错误

我的程序包含以下代码。

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检查)分段错误。 为什么这样?

Solutions Collecting From Web of "pthread_create导致分段错误"

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