Я реализую многопоточную программу, в которой я жду myThread
, чтобы вернуть значение. Я делаю это следующим образом:Кастинг void * to long *
result = pthread_join(myThread, &retValue);
где myThread
возвращает (void *)returnValue
. Моя программа дает Segmentation Fault
, когда я пытаюсь напечатать возвращаемое значение с помощью:
printf("Returned Value: %lu", *(long *)retValue;
Может кто-нибудь сказать, почему это происходит и как это исправить?
Не видя код функции потока, мы можем только догадываться. Я предполагаю, что вы возвращаете указатель на локальную переменную, которая выходит из области действия при возврате функции. – Barmar
В соответствии с документом параметр 'value_ptr'' pthread_join' заполняется значением, переданным 'pthread_exit'. Это означает, что если вы не вызываете 'pthread_exit' и просто возвращаете функцию точки входа потока, вы не получаете значения. Вы используете 'pthread_exit'? – zneak
Нет. Я просто использую 'return (void *) returnValue'. Это создает проблему? – TheRookierLearner