假设我已经使用 pthread_create()
启动了新线程,然后使用 pthread_detach()
将其分离。现在,在线程上下文的内,我使用malloc()
分配了一些内存。
当线程退出时,malloc'ed
内存会自动释放吗?
最佳答案
- 线程共享内存资源(至少是 POSIX)。
- malloc()/realloc()/free() 内存管理实际上并不知道线程 (至少到现在为止)。
- 因此您应该将 malloc() 的结果视为简单的“资源”。它不是线程链接的。
所以现在答案应该很明显了,分配的任何内存都没有链接到线程,所以 它在线程退出时不是 free()'d。当然你可以提供一些特殊的处理 机制,但它不是自动完成的。
这样做的好处是您可以在线程之间传递内存分配,换句话说,在一个线程中分配此类资源,然后从另一个线程中释放(这对您是否有利)。
希望这会是有用的解释,将分配的内存指针视为任何进程级描述符。
关于c - 从 pthread 退出会释放 malloced 内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1689890/