退出pthread发布malloced内存?

jld*_*ont 5 c linux malloc memory-management pthreads

假设我已经开始使用新线程,pthread_create()然后使用它进行分离pthread_detach().现在,从线程上下文,我使用分配一些内存malloc().

当线程退出时,malloc'ed内存是否会自动释放?

Rom*_*nko 8

  • 线程共享内存资源(至少POSIX).
  • malloc()/ realloc()/ free()内存管理实际上并不了解线程(至少到现在为止).
  • 因此,您应该将malloc()的结果视为简单的"资源".它不是线程链接的.

所以现在回答应该是显而易见的,任何分配的内存都没有与线程的链接,因此在线程退出时它不是free().当然,您可以提供一些特殊的处理机制,但它不是自动完成的.

好的一面是你可以在线程之间传递内存分配,换句话说,在一个线程中分配这样的资源,然后从另一个线程中释放(对你有好处).

希望这将是有用的解释,考虑分配的内存指针作为任何进程级描述符.