NoS*_*tAl 2 c memory-leaks pthreads
我举了一个例子
https://www.kernel.org/doc/man-pages/online/pages/man3/pthread_create.3.html
通过创建pthread_create没有调用的线程,使它无限运行(小睡眠,因此CPU使用不是瓶颈因此没有排队的线程)pthread_join.这会导致内存泄漏,最终PC内存不足.当我pthread_detach在创建线程程序后立即添加时,表现很好并且一段时间后内存使用量保持不变.
我的印象是当一个线程退出时(在关闭} 函数时,如果给它pthread_create),它的所有资源都被清除了.
我的印象是当一个线程退出(在函数关闭时),如果给予pthread_create,则清除所有资源.
这是一个错误的印象.如您所说,当您调用pthread_join或线程是分离线程时,所有资源都会为已完成的线程释放.
对于非分离线程,必须保留一些资源 - 否则您无法通过稍后调用pthread_join来获取线程的返回值.分离的线程无法连接,因此您无法从中获取退出值.
许多实现将此返回值存储在线程的堆栈上,从而保持整个堆栈,直到有人在非分离线程上调用pthread_join.
| 归档时间: |
|
| 查看次数: |
607 次 |
| 最近记录: |