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

如何做切片网站汶上公司网站建设

如何做切片网站,汶上公司网站建设,上海专业网站建设渠道,艺术学院网站模板二、定长内存池的设计 设计一个定长的内存池,这个内存池的定长在于,当剩余空间使用完毕后,总是开辟相同长度的新空间来使用。我们会使用到一个指针来切割划分大空间为小空间。大空间是内存池向系统申请的内存大小,而小空间是程序…

二、定长内存池的设计

设计一个定长的内存池,这个内存池的定长在于,当剩余空间使用完毕后,总是开辟相同长度的新空间来使用。我们会使用到一个指针来切割划分大空间为小空间。大空间是内存池向系统申请的内存大小,而小空间是程序向该内存池申请的内存大小。由于程序向内存池申请存放空间的类型不同,这个小空间的大小也由需要存放的类型决定大小。

FixedPool1

实际上指针只有一个, _freeList 后面的空间理论上是连起来的, _freeList 在被申请空间后更新,相当于链表的头插头删。

#include <iostream>
#include <vector>
#ifdef _WIN32
#include <Windows.h>
#endif
//从堆上按页申请空间
inline static void* SystemAlloc(size_t page)
{
#ifdef _WIN32void* ptr = VirtualAlloc(0, page << 13, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
#endif
#ifdef __linux__size_t size = page << 13;void* ptr = mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);#endifif (ptr == nullptr){throw std::bad_alloc();}return ptr;
}template<class T>
class FixedPool
{T* New(){T* object = nullptr;//优先使用还回来的空间if (_freeList){void* next = *((void**)_freeList);object = (T*)_freeList;_freeList = next;}//如果大空间不足if (_restBytes < sizeof(T)){_restBytes = 128 * 1024;	//一次申请128Kb的空间_memory = (char*)SystemAlloc(_restBytes >> 13);	//128Kb右移13位相当于16页if (_memory == nullptr){throw std::bad_alloc();}}//从申请的大空间中截一块出来object = (T*)_memory;size_t objSize = sizeof(T) < sizeof(void*) ? sizeof(void*) : sizeof(T);_memory += objSize;_restBytes -= objSize;//定位new,显示调用T的构造函数new(obj)T;return obj;}void Delete(T* obj){obj->~T();*(void**)obj = _freeList;_freeList = obj;//把空间还回来}
private:char* _memory = nullptr;	//char类型为1字节大小方便申请任意大小的内存size_t _restBytes = 0;	//记录大内存在切分后的剩余比特数void* _freeList = nullptr;
};

*(void**) 的强制类型转换是在兼容 32 位和 64 位,使其不会因为指针大小不同而程序出错,也不用为了兼容 32 位和 64 位使用条件编译。

size_t objSize = sizeof(T) < sizeof(void*) ? sizeof(void*) : sizeof(T); 这行,要求开的空间必须比指针大,因为我们会用归还回来的空间存放,_freeList 来指向下一块空间,如果 T 小于指针的大小,就有可能存不进 _freeList

http://www.dtcms.com/wzjs/565098.html

相关文章:

  • 上海建设网站是国家级吗好游快游app官方网站下载
  • 平顶山建设局网站网址大全下载到桌面
  • 网站开发构建工具暴雪时分电视剧免费观看
  • 微商城免费开通泉州网站seo公司
  • 沧州免费网站建设长沙 外贸网站建设公司价格
  • 那曲做网站html代码大全表格
  • 建立自己的网站平台做电子商务网站的公司
  • 安装网站出现dir公司网站建设的目的和意义
  • 北京诚通新新建设有限公司网站做a视频 免费网站
  • 福州精美个人网站建设公司国家工信部备案网站
  • 濮阳做网站做网站要什么功能
  • 帮做3d模型的网站景区加强网站建设
  • 做视频网站需要什么资质智能网站建设哪家效果好
  • 内网做网站需要空间吗南京html5响应式网站建设
  • 如何对新开网站做收录织梦网站添加视频教程
  • 电商网站平台建设资金预算厦门关键词seo排名网站
  • 营销版网站dede手机网站模板下载
  • 消费返利系统网站建设ip直接访问网站 备案
  • 建设网站不会写代码北京网站建设电扬科技
  • 淘宝的网站怎么做的好在线推广网站的方法
  • 海外产品网站建设WordPress数据消失
  • 中天建设中瑞物资网站狼雨seo培训
  • 北京网站优化常识纯flash网站
  • 如何把网站上传到空间网站开发的经济效益分析
  • 程序界面设计搜索引擎优化结果
  • seo网站排名后退网站建设与管理的展望与未来
  • 如何做好企业网站用手机下载地图到内全卡
  • 自贡百度做网站多少钱广州网站建设广州网络推广公司好
  • 建网站卓设计公司网站应该包括的信息
  • 网站设计模式海口制作网页公司