线程创建后,没有调用pthread_join 或 pthread_detach会导致内存泄漏。
解决方法有以下几种:
第一种:在线程处理函数中调用 pthread_detach函数
pthread_detach(pthread_self());
第二种:在创建线程的设置PTHREAD_CREATE_DETACHED属性
- pthread_attr_t attr;
- pthread_t thread;
- pthread_attr_init (&attr);
- pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
- pthread_create (&thread, &attr, &thread_function, NULL);
- pthread_attr_destroy (&attr);
第三种: 创建线程后用 pthread_join() 一直等待子线程结束
pthread_join(thread, NULL);
主要在主线程中使用,且主要用于固定分配的线程中。