假设我使用
pthread_create()
启动了一个新线程并使用pthread_detach()
将其分离。现在,在线程内部,我使用malloc()
分配了一些内存。
当线程退出时,malloc()
分配的内存会自动释放吗?
pthread_create()
启动了一个新线程并使用pthread_detach()
将其分离。现在,在线程内部,我使用malloc()
分配了一些内存。
当线程退出时,malloc()
分配的内存会自动释放吗?
现在答案显而易见,任何分配的内存都与线程没有关联,因此在线程退出时不会被 free()。当然,你可以提供一些特殊的处理机制,但这并不是自动完成的。
好处是你可以在线程之间传递内存分配,换句话说,在一个线程中分配这样的资源,然后在另一个线程中释放(对你有益还是无益取决于具体情况)。
希望这个解释对你有所帮助,把分配的内存指针看作任何进程级别的描述符。
不是的 - 仅通过显式的“free”才能释放malloc分配的内存。
线程和进程的区别在于,进程拥有自己的资源(例如堆内存),而线程没有。如果您需要这种功能,那么您需要的是一个进程而不是线程。
我非常确定它不会,你必须使用free()。
不是的。虽然进程退出时会释放所有分配的内存,但线程退出时并非如此。