无法理解段错误的情况。
int main()
{
int val;
pthread_t thread;
...........................
pthread_join(thread,(void **) &val);
printf("Val=%d",val);
//and here sometimes come segmentation
//fault and other times i get correct val value
...........................
}
void *Do(void *)
{
int retval=4;
...............
pthread_exit((void *) retval);
}
如果我是正确的,pthread_exit() 将地址(值为 4)存储到由 (&val) 指针指向的变量中,这意味着在 pthread_join() 之后 val=4。但是,如果我多次启动程序,我会得到正确的 val 值(即 4)和不同启动时的分段错误。(顺便说一句,在 Do 函数中使用指针和动态分配以正确的方式执行相同的结果)。
请帮帮我。先感谢您。