退出pthread发布malloced内存?

时间:2009-11-06 19:43:00

标签: c linux memory-management pthreads malloc

假设我已经使用pthread_create()启动了新主题,然后使用pthread_detach()将其分离。现在,从 线程上下文中,我使用malloc()分配了一些内存。

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

5 个答案:

答案 0 :(得分:8)

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

所以现在回答应该是显而易见的,任何分配的内存都没有与线程的联系 线程退出时不是free()'d。当然,您可以提供一些特殊处理 力学但不是自动完成的。

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

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

答案 1 :(得分:4)

不 - malloc的内存只能通过明确的“免费”释放。

答案 2 :(得分:2)

这几乎就是线程和进程之间的区别,进程拥有自己的资源,就像堆内存线程那样。如果你想要那个功能,那么你想要一个进程而不是一个线程。

答案 3 :(得分:1)

我很确定它没有,你必须使用free()。​​

答案 4 :(得分:1)

没有。虽然当进程退出时释放任何malloced内存,但是当线程退出时也是如此。