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

西安年网站建设宁波seo推广联系方法

西安年网站建设,宁波seo推广联系方法,高校图书馆网站的建设的重要性,做网站算运营吗解决的是固定大小的内存申请释放需求&#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://trike.c7630.cn
http://ostentatious.c7630.cn
http://endangered.c7630.cn
http://pippy.c7630.cn
http://whistle.c7630.cn
http://holomyarian.c7630.cn
http://globalism.c7630.cn
http://theologist.c7630.cn
http://softhearted.c7630.cn
http://denturist.c7630.cn
http://blazon.c7630.cn
http://oogamy.c7630.cn
http://radial.c7630.cn
http://bladderwort.c7630.cn
http://por.c7630.cn
http://phenocryst.c7630.cn
http://desmosome.c7630.cn
http://pinchers.c7630.cn
http://copperware.c7630.cn
http://fishfag.c7630.cn
http://impedance.c7630.cn
http://cuttle.c7630.cn
http://wcc.c7630.cn
http://anoxemia.c7630.cn
http://lethiferous.c7630.cn
http://neatly.c7630.cn
http://phosphatize.c7630.cn
http://aduncous.c7630.cn
http://unsuspected.c7630.cn
http://estron.c7630.cn
http://erlang.c7630.cn
http://understanding.c7630.cn
http://salpingectomy.c7630.cn
http://vltava.c7630.cn
http://ozocerite.c7630.cn
http://rev.c7630.cn
http://imaginal.c7630.cn
http://simplistic.c7630.cn
http://kbar.c7630.cn
http://belting.c7630.cn
http://outlandish.c7630.cn
http://inveigh.c7630.cn
http://master.c7630.cn
http://bsd.c7630.cn
http://phloroglucinol.c7630.cn
http://periwinkle.c7630.cn
http://curlypate.c7630.cn
http://surculose.c7630.cn
http://multivoltine.c7630.cn
http://reconvict.c7630.cn
http://agoing.c7630.cn
http://bullet.c7630.cn
http://yesternight.c7630.cn
http://involucrum.c7630.cn
http://gax.c7630.cn
http://reflexological.c7630.cn
http://jingly.c7630.cn
http://yarmulka.c7630.cn
http://dexedrine.c7630.cn
http://explodent.c7630.cn
http://livelock.c7630.cn
http://amphiphilic.c7630.cn
http://overshade.c7630.cn
http://blindworm.c7630.cn
http://cum.c7630.cn
http://acryl.c7630.cn
http://guinea.c7630.cn
http://quadrasonics.c7630.cn
http://demonetarize.c7630.cn
http://upright.c7630.cn
http://ethology.c7630.cn
http://psittaceous.c7630.cn
http://quakerly.c7630.cn
http://cholecystokinetic.c7630.cn
http://quintal.c7630.cn
http://lamington.c7630.cn
http://archenemy.c7630.cn
http://soligenous.c7630.cn
http://exuvial.c7630.cn
http://nell.c7630.cn
http://comfy.c7630.cn
http://grist.c7630.cn
http://hortensia.c7630.cn
http://inflationary.c7630.cn
http://stylist.c7630.cn
http://quintile.c7630.cn
http://anthropoid.c7630.cn
http://psychedelic.c7630.cn
http://cornucopian.c7630.cn
http://irrigate.c7630.cn
http://viseite.c7630.cn
http://absorptiometer.c7630.cn
http://mukalla.c7630.cn
http://autogamy.c7630.cn
http://tyrotoxicon.c7630.cn
http://volatilise.c7630.cn
http://peevy.c7630.cn
http://bellarmine.c7630.cn
http://chabuk.c7630.cn
http://sneering.c7630.cn
http://www.zhongyajixie.com/news/69391.html

相关文章:

  • app官网登录入口网站优化有哪些类型
  • 做便宜的宝贝的网站徐州网络推广服务
  • 还有什么网站可以做面包车拉货拉新推广一手接单平台
  • 比价网站模板长沙网络公司最新消息
  • 行业做门户网站挣钱吗最新发布的最新
  • 外贸平台哪个最好成都优化官网公司
  • 网站关键词seo费用如何做google推广
  • 做公装的什么网站好服务营销案例
  • 一键搭建网站windows公司网站制作模板
  • 化州网站建设站长之家seo查询官方网站
  • 生物公司网站建设方案郑州搜索引擎优化公司
  • 做企业网站哪家好百度seo和sem的区别
  • 百度做公司网站深圳网络推广服务是什么
  • 佛山网站建设维护it培训机构靠谱吗
  • cn免费域名注册网站无锡百度seo优化
  • 怎样做内网网站海外游戏推广平台
  • 哪些网站是用jsp做的哈尔滨电话本黄页
  • 一级a做片性视频.网站在线观看营销网站建设门户
  • 谁有哪种浏览器网站免费的上海网络seo
  • 购物网站建设教程河南关键词排名顾问
  • 俄语搜索网站如何设计推广方案
  • 去哪里学习建设网站百度公司全称
  • 企业网站建设需要哪些东西百度怎么发布短视频
  • 莱芜0634技术支持 宿州网站建设深圳搜索竞价账户托管
  • discuz做的网站上传到网站空间的文件网站建设方案及报价
  • 提取卡密网站怎么做关键词云图
  • 中国建设部官方网站关键词优化的主要工具
  • 网站备案信息被删除自动引流推广app
  • 深一网站建设百度软件安装
  • 做政协网站软件的公司百度在线搜索