水木社区手机版
首页
|版面-C++程序设计语言(CPlusPlus)|
新版wap站已上线
展开
|
楼主
|
同主题展开
|
溯源
|
返回
上一篇
|
下一篇
|
同主题上篇
|
同主题下篇
主题:Re: 请教个shared_ptr的问题
seakia
|
2020-07-14 21:09:58
|
reset你的理解有问题,不了解的地方看下代码。
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/shared_ptr_base.h#L1300
reset不传递参数时候,只是swap了一个空指针,可以简单理解为常规的shared_ptr出作用域了。不是一定释放的。
因为此处你已经拷贝了一次,引用计数是2了,此处不会释放。
ps:shared_ptr是线程不安全的,并发读写要自己保证读写安全。
【 在 namelij 的大作中提到: 】
: 线程A创建,然后在线程A中创建线程B,并将该指针作为B的参数
: 然后线程A中执行pt.reset(),此时pt.use_count == 0,进行release操作
: 但是这个时候,线程B启动了,对pt进行赋值操作,其引用计数又++
--
FROM 140.206.141.*
上一篇
|
下一篇
|
同主题上篇
|
同主题下篇
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版