解决线程的内存泄露的办法

线程创建后,没有调用pthread_join 或 pthread_detach会导致内存泄漏。


解决方法有以下几种:

第一种:在线程处理函数中调用 pthread_detach函数

pthread_detach(pthread_self()); 


第二种:在创建线程的设置PTHREAD_CREATE_DETACHED属性

  1.  pthread_attr_t attr;  
  2.  pthread_t thread;  
  3.  pthread_attr_init (&attr);  
  4.  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);  
  5.  pthread_create (&thread, &attr, &thread_function, NULL);  
  6.  pthread_attr_destroy (&attr); 

第三种: 创建线程后用 pthread_join() 一直等待子线程结束

pthread_join(thread, NULL);

主要在主线程中使用,且主要用于固定分配的线程中。

你可能感兴趣的:(线程,linux,内存泄露,pthread_detach,pthread_join)