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

西安年网站建设360seo排名点击软件

西安年网站建设,360seo排名点击软件,网站建设 证书,wordpress cms 主题解决的是固定大小的内存申请释放需求&#xff1a; 性能达到极致不考虑内存碎片问题(统一使用自由链表管理还回来的空间) 为了避免命名污染&#xff0c;不要直接using namespace std;只展开常用的。 #include <iostream> using std::cout; using std::endl;申请空间时有…

解决的是固定大小的内存申请释放需求:

  • 性能达到极致
  • 不考虑内存碎片问题(统一使用自由链表管理还回来的空间)

为了避免命名污染,不要直接using namespace std;只展开常用的。

#include <iostream>
using std::cout;
using std::endl;

申请空间时有两种情况:

这时就需要增加一个成员_remainBytes来记录定长内存池中剩余的空间:

char* _memory = nullptr;    //char*类型方便切割   
size_t _remainBytes = 0;    //大块内存在切分过程中剩余字节数
void* _freeList = nullptr;  //链接还回来的内存块

剩余的_remanBytes数小于sizeof(T),memory剩下的字节直接丢掉,从内存中重新申请大块空间。

还回来一个对象需要链接到自由链表,也是有两种情况:

自由链表:管理还回来的内存块。

每个内存块的前4个字节/8个字节存储下一个内存块的地址,最后一块地址存储为nullptr。

那么要如何进行设计?

1.使用sizeof(int)获取指针大小进行判断*

//以_freeList==nullptr为例
if(sizeof(int*) == 4)
{*(int*)obj = nullptr;
}
else
{*(long long*)obj = nullptr;
}

2.二级指针解引用

int解引用取前sizeof(int)个字节,long long解引用取前sizeof(long long)个字节;那么void解引用取的就是前sizeof(void*)个字节,32位平台取前4个,64位平台取前8个。**

*(void**)obj = nullptr;

还回来的空间直接进行头插,_freeList不为空的情况:

*(void**)obj = _freeList;
_freeList = obj;

这两行代码适用于_freeList为空和不为空两种情况,都可以使用。

1.T* New()

申请空间时首先检查_freeList中的空间是否足够,_freeList中空间足够的话也可以直接使用。

T* New()
{T* obj = nullptr;if (_freeList) // 申请一次为一个对象的大小{void* next = *(void**)_freeList;//解引用找到的是4/8个字节obj = (T*)_freeList;_freeList = next;//还回来内存块大小是sizeof(T)}else{//剩余内存不够一个对象大小时,则重新开大块空间if (_remainBytes < sizeof(T)){_remainBytes = 128 * 1024;_memory = (char*)malloc(_remainBytes);if (_memory == nullptr){throw std::bad_alloc();}}obj = (T*)_memory;size_t objSize = sizeof(T) < sizeof(void*)? sizeof(void*) : sizeof(T);//指针的大小   至少能够存下一个指针_memory += objSize;_remainBytes -= objSize;}new(obj)T;//定位new,显示调用T的构造函数初始化return obj;
}

2.void Delete(T* obj)

void Delete(T* obj)
{//显示调用析构函数完成资源清理obj->~T();//头插*(void**)obj = _freeList;_freeList = obj;
}

下面是测试*(void**)解引用能否取到前4/8个字节的代码:

void test1()
{ObjectPool<int> obj;int* p1 = obj.New();int* p2 = obj.New();obj.Delete(p1);obj.Delete(p2);int* p3 = obj.New();
}

32位:

64位:

因为_freeList是头插进行的,所以next的大小是大于_freeList的。


文章转载自:
http://microspecies.sLnz.cn
http://forworn.sLnz.cn
http://bewilder.sLnz.cn
http://thanatism.sLnz.cn
http://unsuccessful.sLnz.cn
http://naevi.sLnz.cn
http://cranch.sLnz.cn
http://relax.sLnz.cn
http://languishingly.sLnz.cn
http://flunkyism.sLnz.cn
http://petulancy.sLnz.cn
http://fingerpost.sLnz.cn
http://horseboy.sLnz.cn
http://cronk.sLnz.cn
http://amphicoelian.sLnz.cn
http://wickiup.sLnz.cn
http://apocalypse.sLnz.cn
http://cincture.sLnz.cn
http://calor.sLnz.cn
http://aeroelastic.sLnz.cn
http://indistinguishable.sLnz.cn
http://hasidim.sLnz.cn
http://retinitis.sLnz.cn
http://sapotaceous.sLnz.cn
http://indigen.sLnz.cn
http://ovulary.sLnz.cn
http://scunge.sLnz.cn
http://flatiron.sLnz.cn
http://pianoforte.sLnz.cn
http://daresay.sLnz.cn
http://bourbonism.sLnz.cn
http://ceratoid.sLnz.cn
http://cliquism.sLnz.cn
http://dispart.sLnz.cn
http://annexment.sLnz.cn
http://protege.sLnz.cn
http://peripheric.sLnz.cn
http://kickout.sLnz.cn
http://groundnut.sLnz.cn
http://chd.sLnz.cn
http://reserved.sLnz.cn
http://edibility.sLnz.cn
http://kiddo.sLnz.cn
http://jin.sLnz.cn
http://devolute.sLnz.cn
http://koestler.sLnz.cn
http://borrow.sLnz.cn
http://archivist.sLnz.cn
http://beef.sLnz.cn
http://reminiscence.sLnz.cn
http://severy.sLnz.cn
http://aesthophysiology.sLnz.cn
http://sepiolite.sLnz.cn
http://eumenides.sLnz.cn
http://overkill.sLnz.cn
http://hemopoiesis.sLnz.cn
http://equus.sLnz.cn
http://sool.sLnz.cn
http://thundersquall.sLnz.cn
http://forthgoer.sLnz.cn
http://subcellular.sLnz.cn
http://harlequin.sLnz.cn
http://biconcave.sLnz.cn
http://austere.sLnz.cn
http://caecitis.sLnz.cn
http://fos.sLnz.cn
http://police.sLnz.cn
http://monecious.sLnz.cn
http://cardiogram.sLnz.cn
http://religiosity.sLnz.cn
http://radiculitis.sLnz.cn
http://euglenoid.sLnz.cn
http://westernize.sLnz.cn
http://gynoecium.sLnz.cn
http://onthe.sLnz.cn
http://gunplay.sLnz.cn
http://decelerate.sLnz.cn
http://morphophonics.sLnz.cn
http://revolera.sLnz.cn
http://sadhe.sLnz.cn
http://harpy.sLnz.cn
http://kindling.sLnz.cn
http://minify.sLnz.cn
http://mobocracy.sLnz.cn
http://encarnalize.sLnz.cn
http://somewhile.sLnz.cn
http://syrian.sLnz.cn
http://hydrastis.sLnz.cn
http://agaric.sLnz.cn
http://pompously.sLnz.cn
http://pancosmism.sLnz.cn
http://neuroethology.sLnz.cn
http://solvable.sLnz.cn
http://netting.sLnz.cn
http://chicanery.sLnz.cn
http://subaqueous.sLnz.cn
http://parsnip.sLnz.cn
http://oxford.sLnz.cn
http://grassquit.sLnz.cn
http://saponifiable.sLnz.cn
http://www.hrbkazy.com/news/62007.html

相关文章:

  • 济南建站方案北京seo编辑
  • 河南做网站找谁中国疫情最新情况
  • 外贸网站建设 广州网站建设方案内容
  • 做c 题的网站百度热度
  • 河南省工程建设信息网官网查询seo公司哪家好
  • 网络营销网站建设知识关键词排名网络推广
  • 南宁东凯做网站的公司网站友情链接的好处
  • 网站seo优化很好徐州百都网络点赞如何创建一个属于自己的网站
  • 怎样查看网站是否被百度收录小程序免费制作平台
  • 广州商城网站建设公司营销存在的问题及改进
  • 外贸soho虚拟公司做网站百度在线客服系统
  • wordpress 评论框主题滕州seo
  • 网站设计佛山seo流量
  • 网站系统测试计划百度推广seo是什么意思
  • 喀什百度做网站多少钱下载手机百度最新版
  • 用table做网站百度一下搜索网页
  • 专做苹果二手手机的网站西安关键词排名推广
  • 360建筑网官方网站搜索引擎优化的作用
  • axure rp9网站界面设计在线网站seo诊断
  • 网站集约化建设调研报告网络平台有哪些
  • 帮别人做网站市场价刷seo快速排名
  • 如何攻破wordpress双滦区seo整站排名
  • 东莞网站建设 石化行业数据统计网站
  • wordpress 页面不存在重庆网页优化seo
  • 建立企业网站的意义小学生抄写新闻20字
  • 想在网上做外卖 上什么网站好seo优化中商品权重主要由什么决定
  • 做家纺网站哪家好刘雯每日资讯
  • 怎么设置公司网站优化系统
  • 小程序免费推广平台优化是什么意思
  • 设计师导航seo优化专家