我正在實現一個多線程程序,其中我正在等待myThread
重新創建一個值。Casting void * long *
result = pthread_join(myThread, &retValue);
其中myThread
回報(void *)returnValue
:我如下這樣做。我的程序給出了一個Segmentation Fault
當我嘗試打印的返回值使用:
printf("Returned Value: %lu", *(long *)retValue;
誰能告訴爲什麼發生這種情況,如何解決這一問題?
沒有看到線程函數的代碼,我們只能猜測。我的猜測是你正在返回一個指向局部變量的指針,當函數返回時它會超出範圍。 – Barmar
根據文檔,'pthread_join'的'value_ptr'參數被傳遞給'pthread_exit'的值填充。這意味着如果你不調用'pthread_exit'並且讓線程的入口點函數返回,那麼你不會得到一個值。你在使用'pthread_exit'嗎? – zneak
不,我只是使用'return(void *)returnValue'。這是否會造成問題? – TheRookierLearner