rce*_*tin 1 c linux dynamic-memory-allocation
我在一个线程中分配一些内存.当我打电话pthread_detach(pthread_self());这是分配给这个线程通过Linux的内存应该被释放后,线程被终止pthread_exit();或pthread_cancel().
我的问题是,我是否还应该释放我用malloc分配的内存?另外,如果线程中的其他函数分配了一些空间,我是否也应该释放这个空间,即使线程终止并 pthread_detach(pthread_self());在线程中调用?
void *test_thread(void * arg)
{
pthread_detach(pthread_self());
int *c = malloc(2048);
pthread_exit(NULL);
}
Run Code Online (Sandbox Code Playgroud)
唯一能帮到pthread_detach你的是你不需要调用pthread_join来清理内部线程数据结构.
通过malloc仍需分配的任何内存仍需手动释放.线程需要在退出之前执行该操作,或者需要将指向malloc的内存的指针提供给另一个线程进行清理.