解决使用pthread_create函数造成的内存泄露

2014-11-24 12:40:11 · 作者: · 浏览: 2

首先来看一段程序:



程序刚开始运行时内存截图:





程序运行一段时间后内存截图:





从上面两个截图中比较会发现,程序test1使用的内存越来越多,到底是什么原因造成的内存泄露呢?


因为在默认情况下通过pthread_create函数创建的线程是非分离属性的,由pthread_create函数的第二个参数决定,在非分离的情况下,当一个线程结束的时候,它所占用的系统资源并没有完全真正的释放,也没有真正终止。只有当pthread_join函数返回时,该线程才会释放自己的资源。而在分离属性的情况下,一个线程结束会立即释放它所占用的资源。