C++如何正确使用智能指针?看完这4个点你就明白了( 八 )
性能
-
内存占用高 。 shared_ptr 的内存占用是裸指针的两倍 。 因为除了要管理一个裸指针外 , 还要维护一个引用计数 。 因此相比于 unique_ptr shared_ptr 的内存占用更高
-
原子操作性能低 。 考虑到线程安全问题 , 引用计数的增减必须是原子操作 。 而原子操作一般情况下都比非原子操作慢 。
-
使用移动优化性能 。 shared_ptr 在性能上固然是低于 unique_ptr 。 而通常情况 , 我们也可以尽量避免 shared_ptr 复制 。 如果 , 一个 shared_ptr 需要将所有权共享给另外一个新的 shared_ptr , 而我们确定在之后的代码中都不再使用这个 shared_ptr , 那么这是一个非常鲜明的移动语义 。 对于此种场景 , 我们尽量使用 std::move , 将 shared_ptr 转移给新的对象 。 因为移动不用增加引用计数 , 因此性能比复制更好 。
使用场景
- 小鱼人|如何在新赛季稳定上分?善于抓失误的小鱼人,值得认真练上一波
- 阴阳师|阴阳师SR川猿强度如何 是否值得抽卡 改变斗技环境 大佬的新玩具
- 手机游戏|梦幻西游手游:活力如何换金币 一切都已给出 就看你的选择
- 华佗|三国杀:两位\奶爸\,朱治与华佗比,强度如何呢?
- 亲朋上分|《亲朋上分》266391亲朋下分亲朋上下分永劫无间崔三娘技能介绍 崔三娘如何获得更多技能
- s6|金铲铲之战:S6双城传说如何才能快速上手?基础知识很关键
- |冰雪传奇:平民玩家四转后如何打金
- 穿越火线|CF:传说武器再度上新,那王者、炫金该如何发展?
- 打野|打野已经被削到几乎不能再削了,到底如何平衡打野位置?
- 电子竞技|新华社对话明凯、阿布,探讨电竞选手是如何炼成的?宁王无辜躺枪