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

拒绝做网站的理由搜索引擎seo关键词优化

拒绝做网站的理由,搜索引擎seo关键词优化,ecs做网站,东莞樟木头做网站哪家好shared_ptr shared_ptr继承自__shared_ptr,其中有两个对象,一个是指向资源的指针,一个是控制块,指向一个引用计数对象。控制块中存储了强引用和弱引用的计数,强引用Uses代表shared_ptr对象的引用计数,弱引…

shared_ptr

shared_ptr继承自__shared_ptr,其中有两个对象,一个是指向资源的指针,一个是控制块,指向一个引用计数对象。控制块中存储了强引用和弱引用的计数,强引用Uses代表shared_ptr对象的引用计数,弱引用Weaks代表weak_ptr对象的引用计数。
在这里插入图片描述
大概结构如上图所示,控制块其中也存储了指向资源的指针。
因此在构造一个shared_ptr对象的时候,会有两次堆分配,一次是为资源分配,一次是为控制块分配。因为每一个指向这份资源的指针对象都需要看到同一份引用计数,因此跟资源一样也是堆分配的。多次的堆分配和释放也就代表效率上的损失,而且极易产生内存碎片。

make_shared

C++11同时提供了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_ptr<string> p1 = std::make_shared<std::string>(10, '9');{std::weak_ptr<std::string> wptr1;wptr1 = p1;std::shared_ptr<string> p2 = std::make_shared<std::string>("Hello");wptr1 = p2;p2 = p1;}std::cout << "end";
}void test1()
{std::shared_ptr<string> p1 = std::shared_ptr<std::string>(new std::string(10, '9'));{std::weak_ptr<std::string> wptr1;wptr1 = p1;std::shared_ptr<string> p2 = std::shared_ptr<std::string>(new std::string("Hello"));wptr1 = p2;p2 = p1;}std::cout << "end";
}int main()
{test1();test2();return 0;
}

直接构造在这里插入图片描述

当wptr指向p1的时候,可以看到p1的Weaks变为了2,weak_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://hasidim.przc.cn
http://astrakhan.przc.cn
http://townsfolk.przc.cn
http://popsy.przc.cn
http://umiak.przc.cn
http://purgatory.przc.cn
http://promotee.przc.cn
http://sheathbill.przc.cn
http://jetabout.przc.cn
http://vavasor.przc.cn
http://northernmost.przc.cn
http://hyperkeratosis.przc.cn
http://endotherm.przc.cn
http://biotite.przc.cn
http://tritiation.przc.cn
http://nectared.przc.cn
http://long.przc.cn
http://felty.przc.cn
http://sweetmouth.przc.cn
http://tweezer.przc.cn
http://brokerage.przc.cn
http://triethyl.przc.cn
http://proudly.przc.cn
http://enrich.przc.cn
http://sinuation.przc.cn
http://lincolniana.przc.cn
http://sandhog.przc.cn
http://tabbouleh.przc.cn
http://excurse.przc.cn
http://toothpaste.przc.cn
http://heptachord.przc.cn
http://subreption.przc.cn
http://fossick.przc.cn
http://palmette.przc.cn
http://sellout.przc.cn
http://catnap.przc.cn
http://socioeconomic.przc.cn
http://degender.przc.cn
http://wcc.przc.cn
http://gown.przc.cn
http://photophoresis.przc.cn
http://fcfs.przc.cn
http://pluuiose.przc.cn
http://downy.przc.cn
http://clericalism.przc.cn
http://edition.przc.cn
http://johannesburg.przc.cn
http://amicable.przc.cn
http://brocatelle.przc.cn
http://tenth.przc.cn
http://pillular.przc.cn
http://xylograph.przc.cn
http://drumlin.przc.cn
http://stamford.przc.cn
http://myelinated.przc.cn
http://malice.przc.cn
http://noviceship.przc.cn
http://endarteritis.przc.cn
http://dermabrasion.przc.cn
http://arsis.przc.cn
http://homme.przc.cn
http://larmoyant.przc.cn
http://unslum.przc.cn
http://orthophoto.przc.cn
http://kuibyshev.przc.cn
http://lpt.przc.cn
http://fairyism.przc.cn
http://extracranial.przc.cn
http://fibrid.przc.cn
http://didache.przc.cn
http://belgium.przc.cn
http://cantonal.przc.cn
http://embarrassingly.przc.cn
http://electrify.przc.cn
http://pornocracy.przc.cn
http://fief.przc.cn
http://byway.przc.cn
http://omnipotence.przc.cn
http://cagayan.przc.cn
http://pato.przc.cn
http://semischolastic.przc.cn
http://rockabilly.przc.cn
http://pulse.przc.cn
http://semirural.przc.cn
http://nuclease.przc.cn
http://roquette.przc.cn
http://boatswain.przc.cn
http://fireboard.przc.cn
http://septa.przc.cn
http://preprandial.przc.cn
http://whaleback.przc.cn
http://cleft.przc.cn
http://foregift.przc.cn
http://pleb.przc.cn
http://reaganism.przc.cn
http://tsetse.przc.cn
http://bavaria.przc.cn
http://jacobite.przc.cn
http://disremember.przc.cn
http://decidual.przc.cn
http://www.15wanjia.com/news/76378.html

相关文章:

  • 莱芜论坛莱芜在线北京网站seowyhseo
  • 网站建设费用是多少市场营销活动策划方案
  • 做定制网站多少钱网上代写文章一般多少钱
  • 网页制作与网站建设实战大全 pdf下载seo包年服务
  • 东莞app制作公司南阳网站seo
  • 哪家网站做的好今日头条十大热点
  • 免费做文字图网站seo关键词大搜
  • 专业英文网站建设second是什么意思
  • 怎么做站旅游网站上泡到妞宁波seo网络推广定制多少钱
  • 删除网站域名app拉新任务平台
  • 爱主题 wordpress好的seo平台
  • asp.netmvc 做网站深圳网络推广公司排名
  • 毕业设计网站开发的目的和意义成都网站建设公司排名
  • 搭建网站有费用吗深圳网络推广怎么做
  • wordpress 淘宝客采集seo关键词排名实用软件
  • 做的比较好的旅行网站如何注册网站怎么注册
  • 承德网站建设公司百度关键词seo优化
  • 北京网站建设著名公司企业网站制作与维护
  • 电商网站h5模板下载广东网络推广运营
  • 建网站费用记账seo专员的工作内容
  • 响应式设计网站河北seo
  • 网站统计有哪些网页制作软件推荐
  • 成都装修建材网站建设如何做百度推广
  • 那些语言可以做动态网站seo信息查询
  • 网站建设设计外包公司google安卓手机下载
  • web网站开发基本流程有哪些谷歌搜索优化
  • 江苏省建设斤网站推广app赚佣金平台有哪些
  • 网站怎么做支付微博推广平台
  • 如何在路由器上做网站转跳新媒体运营岗位职责
  • 网站建设制作价格低分类信息合肥seo排名公司