话说linux 下的pthread 内存问题 (Valgrind 检测 及定位排除)

本文详细介绍了Linux下pthread线程的基础操作,包括线程的创建、退出、分离和同步等核心概念。并通过实例讲解如何避免pthread_create后未detach导致的内存泄漏问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.我之前就简单的认为 线程  不就是些 创建, 运行,销毁吗?

或者说 就是这些函数:

pthread_create() 


pthread_exit()


pthread_detach()


..and 不就是这些吗?或者说 还能有丶什么 呢?

于是,在linux 下准备学习 pthread 线程

博主:Jagen在路上

地址:       在Linux中使用线程. 


------------2017--0930----修改----

新增函数:

pthread_join()

适合在主线程中,因为 阻塞了。 没法 往下运行了。

----

pthread_cancel()

pthread_testcancel()

至于这三个怎么用,你可以man  一下,

哦,还有 pthread_self()  这个一看,就是pthread 她自己。 对吧。

举个栗子:

你在当前线程中,想再创建一个线程,于是 你pthread_create() 了

可,当主线程退出了,你是不是 要关闭 主线程下创建的线程,关闭  线程下创建的子线程(这个就是最里面那个线程)。

你如没有全部退出,你再次运行,虽不影响,但 会占用 你系统的开销。时间久了,,,程序就无法创建线程。。。。。程序就会出现莫名其妙的错误。(我猜的,哈哈!)

---------------------------------------------------------------

2. 这个 是讲 线程 状态的 博文:

   庄朋龙的博客


pthread_join一般是主线程来调用,用来等待子线程退出,因为是等待,所以是阻塞的,一般主线程会依次join所有它创建的子线程。
pthread_exit一般是子线程调用,用来结束当前线程。

子线程可以通过pthread_exit传递一个返回值,而主线程通过pthread_join获得该返回值,从而判断该子线程的退出是正常还是异常。

上面这话 来自于这篇:

该博文借鉴了 jagen在路上 的知识



3.到后来,我发现了,不,是因为需要。我 要解决这个问题。


问题是:


解决了一个隐蔽的内存泄漏——pthread_create后没有detach导致内存持续增长


博主 是Bit
地址是:pthread_create内存泄漏 (资源泄漏)


4.

 Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具
官网下载地址:下载 valgrind




Unix下C程序内存泄露检测工具:valgrind的安装使用
valgrind使用指南


感谢以上博主的无私奉献!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Teleger

你的支持是我前进的方向

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值