1
我的程序包含以下代碼。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
(通過gdb
和valgrind
選中)段故障。爲什麼這樣?
這通常會成爲程序中其他地方出現內存破壞的症狀。請發佈我們自己編譯並觀看崩潰的[最小工作示例](http://techblog.ironfroggy.com/2007/02/minimal-working-examples-how-to-why-and.html)。另外,請查看valgrind告訴你的*第一個*無效內存訪問權限 - 打賭你不在這裏。 – zwol
這不是一個最小的工作示例,您可以創建一個裸機SlaveStart。 – pythonic
你爲什麼要使用你的函數指針?如果它具有正確的類型,則不必這樣做。如果它有另一種類型,你會有一個段錯誤:) –