pthread_create 地雷点

本文介绍了使用pthread_create函数创建线程时的一个常见陷阱:传递给该函数的最后一个参数void* arg指向的内存若未妥善处理,则可能导致新线程访问错误或引发pagefault。文章强调了在调用pthread_create后确保arg指向的内存不会被意外释放或修改的重要性。

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

 #include <pthread.h>

       int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                          void *(*start_routine) (void *), void *arg);

这个函数怎么用这里不多介绍,网上随便搜都是。

这里只是想记录今天自己刚踩的一个雷点:

用pthread_create 创建线程,

需要注意的是该函数的最后一个参数:void *arg,

此参数放的是传递给被创建线程的参数的地址,在调用完pthread_create后该指针所指的内存并不会被复制,即使在创建线程里带了copy流程,如果在调用完pthread_create后没有机制保障该内存已经被复制或使用完成的情况下直接释放或修改arg所指向的内存可能会导致被创建线程获取该内存出错,或引起page fault。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值