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

做任务有q币的网站各大网站域名大全

做任务有q币的网站,各大网站域名大全,网站的设计与开发的图片,企业网站 建设过程GNU C对allocators的描述 new_allocator 和malloc_allocator,它们都没有特别的动作,无非底部调用operator new和malloc。它们没有用内存池 区别:::operator new是可重载的 智能型的allocator,使用内存池,分一大块然后…

GNU C++对allocators的描述

在这里插入图片描述
在这里插入图片描述
new_allocator 和malloc_allocator,它们都没有特别的动作,无非底部调用operator new和malloc。它们没有用内存池
区别:::operator new是可重载的
在这里插入图片描述
智能型的allocator,使用内存池,分一大块然后切分成小块。
这类allocator有bitmap_allocator, pool_allocator, _mt_alloc(multithread多线程的分配器)
第三讲说明了实际malloc也是使用的内存池,因此速度提升不明显,很大的优势是减少了cookie
在这里插入图片描述
GNU C++ 提供三种测试,用于测速:插入数据测试,多线程状态下的插入和删除测试,多线程的生产者和消费者模型测试。测速分配器的效率
在这里插入图片描述
debug_allocator 不做分配的事情,只是在申请的内存外包一层

VS2013标准分配器&G4.9标准分配器与new_allocator以及G4.9malloc

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

G4.9array_allocator

在这里插入图片描述
指针_M_array指向一个C++数组,分配释放都是对数组的操作,静态数组不需要释放,归还。所以deallocate没做任何事
在这里插入图片描述
array_allocator使用例子
在这里插入图片描述

G4.9 debug_allocator

在这里插入图片描述
debug_allocator是一个包装器,把另一个分配器包装进来,这里是_Alloc分配器,定义为_M_allocator,实际分配的时候就是调用这个分配器的allocate,分配n + extra个大小的空间
在这里插入图片描述
第三讲介绍的分配器
在这里插入图片描述
在GNU C++4.9版本的__pool_alloc就是上面2.9版本的alloc。它的缺点是什么呢?只拿不还,不把分配的空间还给操作系统
在这里插入图片描述
__pool_alloc测试用例

bitmap_allocator

在这里插入图片描述
最重要的是_M_allocate_single_object和_M_deallocate_single_object
容器每次请求的都是一个元素的内存分配,所以这里就是单独处理一个object的请求。当不是一个object的时候,就会退化到operator new和operator delete
在这里插入图片描述
客户是容器的使用,容器要的一个元素的内存空间就是block,如果是std::list的时候,这个block还包括node里面的指针
上图中一次性挖64个blocks,挖取数量是两倍成长
加上前面的bitmap,还有前面的数值,一起称为super block。
需要64位的bimap,对应blocks数量,来表示每个block的状态。bitmap是unsigned int,一个bitmap是32位,只能记录32个blocks的情况。这里是64个blocks,需要2个bitmap来记录
前面还有一个unsigned int,use count,记录有几个block被分配
最前面还有一个unsigned int,记录super block的大小,记录的大小不包括这个unsigned int本身的大小,是其之后的大小
有一个mini vector(模拟标准库中的vector写出来的)来操纵super block,里面的start指针和finish指针分别指向super block的头和尾
在这里插入图片描述
分配内存:下面深灰色这个block被分配出去,use count = 1,然后bitmap[0]最后一位变成0,表示已经分配出去
在这里插入图片描述
分配第二个block,下面两个灰色的block表示被分配出去,use count = 2,bitmap[0]后两位变成0,表示这两个block被分配出去
在这里插入图片描述
一直分配block出去,已经分配出去63个block,对应的use count = 63,bitmap[1]和bitmap[0]变成80000000H和00000000H,只有最后一个block对应的bitmap中的bit才为1,表示未被分配出去
在这里插入图片描述
归还其中一个block,对应的bitmap要变成1,表示未分配(回收回来),然后use count由63变成62
在这里插入图片描述
当1个super block(有64个blocks)用完后,开始启用第二号super block,这时候super block中的block块数由64扩大两倍变成128个,由4个bitmap整数表示。
而且mini vector中由一个单元,变成两个单元,每个单元指向一个super block
在这里插入图片描述
第二个super block用完(前面已经用完第一个super block,其含有64个blocks,第二个super block包含128个blocks,也已经用完),启用第三个super bloc,其包含的blocks为128 x 2 = 256个。
mini vector中也有第三个单元来控制这个super block
在这里插入图片描述
第一个super block全回收,用另一个mini vector(称为free list)中的entry指针指向这个super block,表示已经回收

如果下次新分配一个super block,它其中blocks的数量要减半。前三个superblocks大小分别为64个,128个,256个,由于第一个superblock被回收,那么下次分配的superblock大小由已经分配的最大值256变成一半,为128个blocks

原来的mini vector里面的指向回收的这个superblock头和尾的entry被删除
在这里插入图片描述
第二个super block也全回收,则free list里的entry加一个,指向这个super block。
原来的mini vector里面指向这个superblock头尾的entry被删除
在这里插入图片描述
第三个super block被全回收,被free list的指针指向

http://www.zhongyajixie.com/news/24916.html

相关文章:

  • 分工做网站如何app拉新
  • 秦皇岛网站推广哪家好网站源码
  • 阿里云网站用什么做的线上销售平台都有哪些
  • 爱企查企业查询入口优化方案模板
  • 外贸商城网站系统做一个企业网站需要多少钱
  • 竭诚网络网站建设公司关键词优化排名用什么软件比较好
  • 淘宝网作图做网站什么叫百度竞价推广
  • 无锡祥搜做网站推广景德镇seo
  • 做网站卖草坪赚钱吗百度快速收录入口
  • godaddy如何买wordpress搜索引擎排名优化seo课后题
  • 广州远洋建设实业公司网站排名第一的助勃药
  • bootstrap模板网站苏州百度推广代理商
  • python做网站源码seo关键词排名优化哪好
  • 公众平台网站建设哪家专业品牌推广百度seo
  • 做海报一般都去什么网站看怎么上百度推广产品
  • web网站开发用什么语言微信营销的模式有哪些
  • 专业的佛山网站建设公司网站引流推广
  • 人才招聘网站模板html电子报刊的传播媒体是什么
  • 网站建设 镇江河南平价的seo整站优化定制
  • 个人网站备案费用营销推广的形式包括
  • 南京谁做免费网站网上营销
  • 专业的河南网站建设公司排名河南品牌网络推广外包
  • 做网站的为什么不给域名和密码百度售后服务电话人工
  • 网站建设dwm搜索最多的关键词的排名
  • 网站创建费用软文推广是什么意思
  • 微信分销平台系统自己怎么优化网站
  • 上饶网站设计公司青岛seo整站优化公司
  • h5 网站建设国内真正的免费建站
  • 如何绑定网站域名解析互联网广告平台排名
  • 张家港做网站优化排名公司做个网站多少钱