我试图通过 pthread_exit() 函数将指向 struct lower_hyper_id 的指针从线程传递到主线程,该函数将比较并输出结构中的值。但是,当我尝试使用返回的值并将其转换为结构时,我收到一个错误(分段错误)。
创建并返回结构的线程:
void *compute(void *arg){
lower_hyper_id *data = (lower_hyper_id *)malloc(sizeof(lower_hyper_id));
//some code
//i debug the program, and at this point, the struct i want
//to return has the values i want.
pthread_exit((void *)data);
}
主要是:
lower_hyper_id l_hyper_id;
int main(){
void *ap_state;
lower_hyper_id values;
void *ret;
//some code
for (int i = 0; i < NUMBER_OF_FILTERING_THREADS; i++)
{
s = pthread_join(filtering_threads[i], (void *)&ret);
//some error checking
values = *((lower_hyper_id *)ret); //this is where i receive the error
if (values.lowest_cost <= l_hyper_id.lowest_cost)
{
l_hyper_id.hyper_id = values.hyper_id;
l_hyper_id.lowest_cost = values.lowest_cost;
}
free(ret);
}
我已经查看了 stackoverflow 中的答案,例如这个问题,但它并没有帮助我解决这个问题。我实际上将代码更改为与此答案中的代码完全相同,但它仍然给我一个错误。