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

长春网站建设排名苏州公司网络搭建

长春网站建设排名,苏州公司网络搭建,品牌建设建议,深圳市坪山区住房和建设局网站解决的是固定大小的内存申请释放需求#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)获取指针大小进行判断* //以_freeListnullptr为例 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() {ObjectPoolint 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://www.hkea.cn/news/14465239/

相关文章:

  • 做网站需要审批不商务网站建设教学视频
  • 误给传销公司做网站算犯罪吗wordpress $post
  • 怎样做微网站商城开发价格
  • 东莞网站制作支付通道高端网约车有哪些平台
  • 石家庄免费网站设计二手交易网站设计怎么做
  • 泸州做网站企业地址如何地图添加
  • 做网站主页用html做网站的背景图怎么弄
  • 中国人在国外做网站网站代理网站建设工程师是做什么的
  • 关于网站制作的评价谷歌网站入口
  • 选择常州网站建设公司wordpress手动获取相关文章
  • 自由设计师网站招标网站建设申请
  • 公司网站建设哪家正规python18+21
  • ftp 企业网站网站如何转做app
  • 网站开发有什么工作内容热点新闻事件素材
  • 上海网站商城建设网站建设费计什么科目
  • 自己做电影网站需要的成本阿里云虚拟主机wordpress建站
  • 鄂州网站建设企业推广三合一做网站
  • 对重庆电子政务网站建设评价什么是可信网站认证
  • 网站开发项目名长沙有实力seo优化公司
  • 网站添加锚点店面设计费
  • 网站推广的技巧live writer wordpress
  • 长沙市做网站公司排名内衣网站建设推广
  • 网站怎么做页面解析跳转企业管理咨询服务合同范本
  • 如何做百度推广网站广州哪里有做公司网站 什么价
  • 杭州网站建设公司官网云服务器和云虚拟主机
  • 大连网站建设微信群html制作旅游景点网页
  • 设计的网站有哪些个人相册网站模板
  • 企业在阿里云做网站wordpress 批量审核
  • 用php做的博客网站家教网站建设的推广
  • 济南哪有做网站的上海高档网站建设