C++11 std::shared_ptr总结与使用示例代码详解
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
C++11 std::shared_ptr总结与使用示例代码详解 std::shared_ptr是C++11中引入的一种智能指针,主要用于自动管理资源的生命周期。下面是std::shared_ptr的总结和使用示例代码详解: 一、智能指针的用途 std::shared_ptr的主要用途是方便资源的管理,自动释放没有指针引用的资源。它使用引用计数来标识是否有多余指针指向该资源。 二、引用计数的机理 在赋值操作中,原来资源的引用计数会减一,新指向的资源引用计数会加一。引用计数的加一/减一操作是原子性的,因此是线程安全的。 三、make_shared的优点 make_shared要优于使用new,make_shared可以一次将需要内存分配好。例如: std::shared_ptr<Test> p = std::make_shared<Test>(); std::shared_ptr<Test> p(new Test); 四、std::shared_ptr的大小 std::shared_ptr的大小是原始指针的两倍,因为它的内部有一个原始指针指向资源,同时有个指针指向引用计数。 五、std::shared_ptr的拷贝 std::shared_ptr支持拷贝,新的指针可以获取前引用计数个数。 六、示例代码 下面是一个示例代码,演示了std::shared_ptr的使用: ```cpp #include <iostream> #include <memory> #include <thread> #include <chrono> #include <mutex> struct Test{ Test() { std::cout << " Test::Test()\n"; } ~Test() { std::cout << " Test::~Test()\n"; } }; void thr(std::shared_ptr<Test> p){ std::this_thread::sleep_for(std::chrono::seconds(1)); std::shared_ptr<Test> lp = p; static std::mutex io_mutex; std::lock_guard<std::mutex> lk(io_mutex); std::cout << "local pointer in a thread:\n" << " lp.get() = " << lp.get() << ", lp.use_count() = " << lp.use_count() << '\n'; } int main(){ std::shared_ptr<Test> p = std::make_shared<Test>(); std::cout << "Created a shared Test\n" << " p.get() = " << p.get() << ", p.use_count() = " << p.use_count() << '\n'; std::thread t1(thr, p), t2(thr, p), t3(thr, p); std::cout << "Shared ownership between 3 threads and released\n" << "ownership from main:\n" << " p.get() = " << p.get() << ", p.use_count() = " << p.use_count() << '\n'; t1.join(); t2.join(); t3.join(); std::cout << "All threads completed, the last one deleted\n"; return 0; } ``` 七、总结 std::shared_ptr是C++11中的一种智能指针,主要用于自动管理资源的生命周期。它使用引用计数来标识是否有多余指针指向该资源,使得资源的管理更加方便和高效。


























- 粉丝: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2023年全国10月高等教育自学考试电子商务网站设计原理试题及答案.doc
- 区块链服务(初步方案).ppt
- 网络管理报告书.pdf
- 网络信息系统安全工作计划3.doc
- 电梯PLC控制系统方案设计书范本.doc
- 国家二级ACCESS机试选择题程序设计基础和软件工程基础模拟试卷.pdf
- 食新食异休闲食品网络营销策划书..doc
- 电子商务网站看书网书店建设策划方案.doc
- 云计算与大数据发展规划课件.pptx
- 学校信息化建设工作总结.docx
- 红牛电子商务发展战略实施步骤.docx
- 网络销售实习周记.docx
- 微信小程序承诺函.docx
- 计算机二级C语言考试试题及答案详解.doc
- 学校网络实训室工程项目方案.doc
- SIMATICSTEP高级培训网络诊疗专家讲座.pptx


