- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
boost常用库的使用介绍第二讲要点
《boost常用库的使用介绍》 第二讲:boost智能指针库 主讲人:步磊峰 UIPower 3D界面引擎负责人 第一节: C++程序员对内存管理的苦恼 1、内存泄漏(memory leak) 2、野指针(wild pointer) 3、访问越界(access violation) boost的智能指针库就是内存管理的强劲解决方案 通过boost智能指针库,我们能够高效的进行内存管理,解决上述问题,同时彻底让你忘记栈(stack),堆(heap)等 内存相关的术语,并且还会发现,boost为c++提供的内存管理解决方案可能比java和c#等其他语言更好,更高效 ! * 第二节:智能指针与RAII机制 为了管理内存等资源,智能指针采用RAII机制(Resource Acquisition Is Initialization,资源获取既初始化) 1、 所有初始化操作移到对象的构造函数中 2、 所有的释放操作都放在对象的析构函数里。 3、 适当的异常处理代码来应付对象构造期间丢出的异常 这种用构造函数申请资源用析构函数释放资源的做法或者说技术通常被称为“资源获取即初始化”。这样做的优点是 而易见的:对象创建后,用户能开始正确使用对象,不用担心对象的有效性或者是否还要作进一步的初始化操作。 * 第三节:Boost智能指针的分类: boost 提供下列几种智能指针: * 第四节:shared_ptr简介 1、boost::shared_ptr 是一个最像指针的“智能指针”: 是boost.smart_ptr中最有价值,最重要,也是最有用的类,boost库的其他许多类库都使用了shared_ptr, 所以毫无悬念的被收入了c++11标准中去。 2、boost::shared_ptr实现了计数引用: 它包装了new操作符在堆上分配的动态对象,但它实现了引用计数,可以自由的拷贝和赋值, 在任意地方共享它。当引用计数为0时,它会自动删除被包装的动态分配的对象。 * 第四节:shared_ptr简介 3、boost::shared_ptr不需要手动的调用类似release方法: 它不像侵入式实现的智能指针一样需要手动的调用类似release方法,全部用由shared_ptr内部的计数器自动增减,这一点是非常有用的。(COM的IUnknow接口以及boost::intrusive_ptrT都是基于侵入式设计的智能指针,需要手动调用类似release方法) 4、boost::shared_ptr支持所有权转移: 并且可以安全的存储在stl标准容器中,是在stl容器存储指针的标准解法。例如std::vectorint* IntVec,使用shared_ptr方式为std::vectorboost::shared_ptrint IntptrVec. * 第五节:shared_ptr类摘要 1、 构造函数,拷贝构造函数,赋值操作符以及析构函数 Templateclass T Class shared_ptr { /*******************构造函数*******************************************/ shared_ptr(); //创建一个持有空指针的shared_ptr,use_count() = 0 get() == NULL //获得一个指向类型T的指针p的管理权,use_count == 1get() == p ,Y类型必须能够转换为T类型 templateclass Y explicit shared_ptr(Y* p); //作用同上,增加了一个构造参数D,是一个仿函数对象,代表删除器,该构造函数非常有用,后面会详解 templateclass Y, class D shared_ptr(Y* p, D d); /******************拷贝构造函数及赋值操作符重载***********************/ //调用拷贝构造函数或赋值操作后,引用计数加1 get() == r.get() use_count() == r.use_count() shared_ptr(shared_ptr const r); templateclass Y shared_ptr(shared_ptrY const r); shared_ptr operator=(
您可能关注的文档
- ANSYS实体建模(上机2)要点.ppt
- AnyBackup6.0.2.0备份软件实施指导文档要点.docx
- AQ3013-2008危险化学品从业单位安全标准化通用规范要点.doc
- Applepay要点.ppt
- AQP&APQP要点.ppt
- arcgis子类型操作要点.docx
- ARDS-南京军区总院要点.ppt
- AreWeLivinginaComputerSimulation要点.doc
- APCO血流动力学监测要点.ppt
- Argoxbarlite中文说明书要点.doc
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
最近下载
- 纸电融合背景下高校图书馆中文图书纸电协调采购的现状与对策研究.docx VIP
- 2023广东中山市人大常委会办公室招聘雇员1人笔试备考试题及答案解析.docx VIP
- DDI 有效沟通学员手册.doc VIP
- 《疼痛评估工具》课件.ppt VIP
- 动物皮水解复合酶及其在动物皮提取胶原蛋白中的应用.pdf VIP
- 《中国传统文化》课件 2.2 道家思想及其人生模式.pptx
- 消防泵房分项工程技术交底.docx VIP
- 黄岭尾矿库安全风险辨识评估报告.doc VIP
- 专题08 整本书阅读(全国通用)(解析版)十年(2016-2025)高考语文真题分类汇编.docx
- 三星级高中评估标准及评价细则.docx VIP
文档评论(0)