当前位置: 首页 > news >正文

wordpress适合外贸站中关村网站建设

wordpress适合外贸站,中关村网站建设,学做淘宝店的网站,网页设计规范模板shared_ptr shared_ptr继承自__shared_ptr#xff0c;其中有两个对象#xff0c;一个是指向资源的指针#xff0c;一个是控制块#xff0c;指向一个引用计数对象。控制块中存储了强引用和弱引用的计数#xff0c;强引用Uses代表shared_ptr对象的引用计数#xff0c;弱引…shared_ptr shared_ptr继承自__shared_ptr其中有两个对象一个是指向资源的指针一个是控制块指向一个引用计数对象。控制块中存储了强引用和弱引用的计数强引用Uses代表shared_ptr对象的引用计数弱引用Weaks代表weak_ptr对象的引用计数。 大概结构如上图所示控制块其中也存储了指向资源的指针。 因此在构造一个shared_ptr对象的时候会有两次堆分配一次是为资源分配一次是为控制块分配。因为每一个指向这份资源的指针对象都需要看到同一份引用计数因此跟资源一样也是堆分配的。多次的堆分配和释放也就代表效率上的损失而且极易产生内存碎片。 make_shared C11同时提供了make_shared函数这是通过构造一个shared_ptr对象而这个对象会事先申请一块足够大的内存空间用于存放管理的资源以及控制块。即分配的堆空间是连续的因此只有一次堆内存分配。 内存的结构就从左边的构造shared_ptr对象到右边的重构对象资源指针和引用计数。 相比shared_ptr构造减少一次内存分配提高效率并且内存空间连续减少内存碎片产生。但是make_shared也存在缺点。 make_shared的缺点 自定义deleter make_shared在构造智能指针对象的时候不能自定义deleter。在创建对象时同时创建控制块这个控制块内部包含了引用计数、deleter等与管理资源相关的信息。因为资源和控制块是属于同一块申请的内存所以使用自定义deleter可能会导致控制块内存被不正确地释放。因此如果要使用deleter应该使用shared_ptr直接构造。 构造函数 因为make_shared需要用到类的拷贝构造因此需要被管理的类的构造函数是public的。 内存延迟归还 因为分配的空间是连续的在资源指针的Uses变为0之后控制块伴随资源的资源不会被立即释放要等Weak也变为0整块内存才被释放。资源只是被clear但是但是没有归还操作系统。而如果是默认的控制块在资源指针的Uses变为0之后资源会被立即释放内存立即归还。 通过调试看直接构造和make_shared的区别 void test2() {std::shared_ptrstring p1 std::make_sharedstd::string(10, 9);{std::weak_ptrstd::string wptr1;wptr1 p1;std::shared_ptrstring p2 std::make_sharedstd::string(Hello);wptr1 p2;p2 p1;}std::cout end; }void test1() {std::shared_ptrstring p1 std::shared_ptrstd::string(new std::string(10, 9));{std::weak_ptrstd::string wptr1;wptr1 p1;std::shared_ptrstring p2 std::shared_ptrstd::string(new std::string(Hello));wptr1 p2;p2 p1;}std::cout end; }int main() {test1();test2();return 0; } 直接构造 当wptr指向p1的时候可以看到p1的Weaks变为了2weak_ptr观察到的内容与p1一致。并且注意此时control block的value显示为default表示默认的控制块。 当weak_ptr指向p2并且将p2指向p1意思就是p2原来管理的Hello资源要释放掉然后用p1拷贝构造一个对象赋值给p2让p1和p2同时管理10个9。 此时可以看到weak_ptr的资源指针已经显示Error reading说明资源已经释放内存已经归还了。 make_shared构造 此时可以看到原来为default的control block已经改为了make_shared。 重复之前的操作把p2指向p1再看weak_ptr的成员。可以看到ptr指向的资源并没有被释放只是内容并清空而已。只有当weak_ptr的生命周期结束整个内存块才会被释放归还给操作系统。 这就是make_shared最主要的缺点在某些内存要求高的场景下可能不太适用。
http://www.w-s-a.com/news/376794/

相关文章:

  • 孟村县做网站长春城投建设投资有限公司网站
  • 国家重大建设项目库网站wordpress安装 var
  • 供求信息网站建设报价网站制作 苏州
  • 动漫建模代做网站百度一下wordpress nginx 固定链接
  • 广州网站开发网络公司网站建设的书
  • php手机网站开发教程家政网站怎么做
  • 视频网站的建设预算通信科技网站设计
  • 糖果网站建设策划书淘宝客网站开源
  • 建站公司还有前途吗cf网站编程
  • 网站建设需求确认表建站工具 比较
  • 刚建设的网站多久能在百度查到考试系统 微网站是什么样的
  • 商城网站建设高端企业网站建设劣势
  • 网站建设征集通讯员的通知seo推广外包
  • 微信公众号微网站建设专业网站建设出售
  • 怎么用wordpress建立自己的网站加强校园网站建设
  • 用什么做网站后台的织梦网站怎么上传
  • 怎么获取网站数据做统计百度快照推广有效果吗
  • 淘宝领卷网站什么做制造网站开发
  • 如何做com的网站网站建设投标书模板
  • 郑州网络营销网站优化网站技术方案怎么写
  • 济南市住房和城乡建设局网站wordpress mnews主题
  • ios开发网站app网站建设企业有哪些方面
  • 网站主页 优帮云深圳代做网站后台
  • app 与网站网站建设要做什么
  • 厦门国外网站建设公司郑州核酸点推vip服务
  • 免费网线seo外链怎么做
  • 宽带技术网网站wordpress widget hook
  • 山西省住房和城乡建设厅网站报名wordpress添加标签插件
  • 网站怎么自己做外贸网站案例
  • 做网站的优势公司网站怎么做站外链接