3

据此 pthread_join 将输出参数 **thread_return 设置为 pd->result,然后释放 pd。这没关系,我错过了什么,还是 glibc 中存在严重的错误?

    /* We mark the thread as terminated and as joined.  */
    pd->tid = -1;

    /* Store the return value if the caller is interested.  */
    if (thread_return != NULL)
      *thread_return = pd->result;


    /* Free the TCB.  */
    __free_tcb (pd);
4

1 回答 1

1

__free_tbc不是 free pd,而是线程的堆栈,即pd->tpp(另请参见此处)。所以pd->result在这些语句之后仍然是一个有效的指针。

于 2013-01-27T13:35:45.433 回答