執行緒函數 area 回傳 double*,主執行緒呼叫 pthread_join(tid, (void**)&a) 時,第二參數需為 void**,用來接收執行緒回傳的指標值。錯誤程式碼中 double** a; 未初始化指向有效記憶體,導致 pthread_join 寫入無效位址引發段錯誤。正確做法:
double *result;
pthread_join(tid, (void**)&result);
printf("Area: %f\n", *result);
free(result);前三個 #if 0 區塊碰巧因記憶體佈局未立即崩潰,但邏輯皆有誤。