问题遇到的现象和发生背景
在Ubuntu系统中的vim下使用thread_detach()函数时,发现这个函数在处理含有lseep()的线程时会造成内存泄漏
```c
1 #include "stdio.h"
2 #include "pthread.h"
3 #include <unistd.h>
4 #include <stdlib.h>
5
6 //如果不
7
8
9
10 void* funct(void* a){
11 //回调函数
12 //sleep(1);
13 // sleep(5);
14 // sleep(10);
15 sleep(50);
16 printf("end");
17 pthread_exit(0);//线程的显示退出
18 }
19
20 int main()
21 {
22 pthread_t tid[10];
23 int ret,i;
24 for(i=0;i<10;i++)
25 {
26 sleep(1);
27 ret=pthread_create(&tid[i],NULL,funct,NULL);
28 if(ret<0)
29 {
30 printf("create thread failed\n");
31 return -1;
32 }
33 printf("begin thread:%d\n",i);
34 pthread_detach(tid[i]);
35 }
36 printf("thread_join process\n");
37 while(1)
38 {
39 printf("1\n");
40 }
41 }
具体现象就是当线程执行sleep(50)时,使用pthread_detach回收内存的话最终虚拟内存为428756;
不使用,不回收内存的话最终线程关闭后虚拟内存为150252。
请问这时什么原因呢?