我正在线程中分配一些内存。当我调用 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);
}
最佳答案
pthread_detach
为您做的唯一一件事就是您不需要调用pthread_join
来清理内部线程数据结构。
任何通过 malloc
分配的内存仍然需要手动释放。要么线程需要在退出之前执行此操作,要么指向分配内存的指针需要可供另一个线程使用以进行清理。
关于c - 线程中的动态分配和释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51861511/