问题描述
我在线程中分配一些内存。当我调用pthread_detach(pthread_self());
时,应该在pthread_exit();
或pthread_cancel()
终止线程后释放Linux为该线程分配的内存。
pthread_detach(pthread_self());
在线程中被调用,我是否也应该释放这些空间?
void *test_thread(void * arg)
{
pthread_detach(pthread_self());
int *c = malloc(2048);
pthread_exit(NULL);
}
推荐答案
为您做的唯一一件事是您不需要调用pthread_join
来清理内部线程数据结构。
通过malloc
分配的任何内存仍需要手动释放。线程需要在退出前执行此操作,或者需要将指向错误锁定的内存的指针提供给另一个线程以进行清理。