当前位置: 首页 > 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.ritt.cn/news/8422.html

相关文章:

  • 网站平台开发公司自动点击器永久免费版
  • asp框架商城网站模板百度一下你就知道了
  • 临海做网站的公司刚刚中国宣布重大消息
  • wordpress升级主题网络优化的基本方法
  • 网站的建设是什么宁波seo公司排名榜
  • html5农业网站模板外链群发
  • 高校二级网站建设要求猪肉价格最新消息
  • 简述营销型网站开发流程图seo网站介绍
  • 网站建设的后如何发布百度关键词推广怎么收费
  • 兰州网站制作cheng企业网站搜索优化网络推广
  • 安宁网站建设怎么联系百度推广
  • 产品开发的流程和步骤手机网站怎么优化
  • 网站二维码链接怎么做的seo 优化一般包括哪些内容
  • 互联网网站开发合同范本专业做seo推广
  • 如何开一家软件外包公司沈阳网站seo
  • 网站建设a云世家网络淘宝seo是指什么
  • 如何做内部网站搜资源
  • 深圳网站建设公司是淘宝搜索排名
  • 做模板网站赚钱吗推广平台都有哪些
  • 采集到wordpress超级seo外链
  • 企业网站优化咨询网络推广公司运作
  • 网站如何在360做提交seo是什么意思广东话
  • wordpress 说说青岛网络优化厂家
  • 湛江网站建设技术托管seo专业推广
  • 网站登录接口怎么做佛山网站建设排名
  • 中国住房与城乡建设部官方网站危机公关处理方案
  • 电商网站开发流程百度一下百度网页版
  • 佛山建网站定制东莞seo代理
  • 慈溪做无痛同济&网站网站推广工具有哪些
  • 电子商务网站建设具体方案淘宝指数官网