假设我已经使用pthread_create()
启动了新主题,然后使用pthread_detach()
将其分离。现在,从 线程上下文中,我使用malloc()
分配了一些内存。
当线程退出时,是否会自动释放malloc'ed
内存?
答案 0 :(得分:8)
所以现在回答应该是显而易见的,任何分配的内存都没有与线程的联系 线程退出时不是free()'d。当然,您可以提供一些特殊处理 力学但不是自动完成的。
好的一面是你可以在线程之间传递内存分配,换句话说就是在一个线程中分配这样的资源,然后从另一个线程中释放(对你有好处)。
希望这将是有用的解释,考虑分配的内存指针与任何进程级描述符有关。
答案 1 :(得分:4)
不 - malloc的内存只能通过明确的“免费”释放。
答案 2 :(得分:2)
这几乎就是线程和进程之间的区别,进程拥有自己的资源,就像堆内存线程那样。如果你想要那个功能,那么你想要一个进程而不是一个线程。
答案 3 :(得分:1)
我很确定它没有,你必须使用free()。
答案 4 :(得分:1)
没有。虽然当进程退出时释放任何malloced内存,但是当线程退出时也是如此。