C++ 11 std::shared_ptr的总结与使用示例代码详解,能否详细阐述?
- 内容介绍
- 文章标签
- 相关推荐
本文共计822个文字,预计阅读时间需要4分钟。
最近查看代码,发现智能指针使用较多。自己平时用的少,周末自己总结总结。方便后续继续使用。
+ std::shared_ptr 概括总结有以下几点:
(1)智能指针主要用途是方便资源的管理,自动释放没有的指针;(2)主要应用于资源管理,如动态分配的内存、文件句柄、网络连接等;(3)自动释放指针,避免内存泄漏。
最近看代码,智能指针用的比较多,自己平时用的少,周末自己总结总结。方便后续使用。
std::shared_ptr大概总结有以下几点:
(1) 智能指针主要的用途就是方便资源的管理,自动释放没有指针引用的资源。
(2) 使用引用计数来标识是否有多余指针指向该资源。(注意,shart_ptr本身指针会占1个引用)
(3) 在赋值操作中, 原来资源的引用计数会减一,新指向的资源引用计数会加一。
std::shared_ptr<Test> p1(new Test); std::shared_ptr<Test> p2(new Test); p1 = p2;
(4) 引用计数加一/减一操作是原子性的,所以线程安全的。
(5) make_shared要优于使用new,make_shared可以一次将需要内存分配好。
std::shared_ptr<Test> p = std::make_shared<Test>(); std::shared_ptr<Test> p(new Test);
(6)std::shared_ptr的大小是原始指针的两倍,因为它的内部有一个原始指针指向资源,同时有个指针指向引用计数。
本文共计822个文字,预计阅读时间需要4分钟。
最近查看代码,发现智能指针使用较多。自己平时用的少,周末自己总结总结。方便后续继续使用。
+ std::shared_ptr 概括总结有以下几点:
(1)智能指针主要用途是方便资源的管理,自动释放没有的指针;(2)主要应用于资源管理,如动态分配的内存、文件句柄、网络连接等;(3)自动释放指针,避免内存泄漏。
最近看代码,智能指针用的比较多,自己平时用的少,周末自己总结总结。方便后续使用。
std::shared_ptr大概总结有以下几点:
(1) 智能指针主要的用途就是方便资源的管理,自动释放没有指针引用的资源。
(2) 使用引用计数来标识是否有多余指针指向该资源。(注意,shart_ptr本身指针会占1个引用)
(3) 在赋值操作中, 原来资源的引用计数会减一,新指向的资源引用计数会加一。
std::shared_ptr<Test> p1(new Test); std::shared_ptr<Test> p2(new Test); p1 = p2;
(4) 引用计数加一/减一操作是原子性的,所以线程安全的。
(5) make_shared要优于使用new,make_shared可以一次将需要内存分配好。
std::shared_ptr<Test> p = std::make_shared<Test>(); std::shared_ptr<Test> p(new Test);
(6)std::shared_ptr的大小是原始指针的两倍,因为它的内部有一个原始指针指向资源,同时有个指针指向引用计数。

