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

宁夏百度网站怎么做网页制作接单平台

宁夏百度网站怎么做,网页制作接单平台,常德营销型网站建设,德阳建设厅官方网站内存池 内存池是指程序预先从操作系统 申请一块足够大内存 ,此后,当程序中需要申请内存的时候,不是直接向操作系统申请,而是 直接从内存池中获取 ; 同理,当 **程序释放内存 **的时候,并不真正将…

内存池

内存池是指程序预先从操作系统 申请一块足够大内存 ,此后,当程序中需要申请内存的时候,不是直接向操作系统申请,而是 直接从内存池中获取
同理,当 **程序释放内存 **的时候,并不真正将内存返回给操作系统,而是 返回内存池 。当程序退出( 或者特定时间 ) 时,内存池才将之前申请的内存真正释放。

程序关键
在进行地址归还的时候,必须要使用二级指针,因为获取到头部指针后需要记录下一个内存块的地址,这句话是理解下方程序的关键。

#pragma once
#include <iostream>
#include <vector>
#include <time.h>
using std::cout;
using std::endl;//定长内存池
//template<size_t N>//非类型模板参数
//class ObjectPool
//{};//定长内存池
template<class T>
class ObjectPool
{
public:T* New() {size_t objsize = sizeof(T) < sizeof(void*) ? sizeof(void*) : sizeof(T);T* obj = NULL;// step2:申请空间有限从回收链表_freeList里拿if (_freeList) {//_freeList每个固定大小的头部字节中都有下一块内存的地址obj = (T*)_freeList;_freeList = *(void**)obj;}else {// step1// 小于1个指针给1个指针的大小if (_remainBytes < objsize) {_remainBytes = 128 * 1024;_memeory = (char*)malloc(_remainBytes);// 开个128kb的空间if (_memccpy == NULL) {throw std::bad_alloc();// 直接抛出异常}}obj = (T*)_memeory;_memeory += objsize;_remainBytes -= objsize;}new(obj)T;// 定位new,就是初始化这段空间return obj;}void Delete(T* obj) {// step1// 将这些空间一一连接起来,回收并利用obj->~T();// 显示调用析构函数*(void**)obj = _freeList;// *(void**)解引用就是void*的大小,也就是一个指针的大小//头插入_freeList = obj;}
private:char* _memeory = NULL;// 指向内存块 头部 的指针size_t _remainBytes = 0;// 指向内存块 剩余 的指针void* _freeList = NULL;// 指向回收链表的 头指针
};struct TreeNode
{int _val;TreeNode* _left;TreeNode* _right;TreeNode():_val(0), _left(nullptr), _right(nullptr){}
};void TestObjectPool()
{// 申请释放的轮次const size_t Rounds = 3;// 每轮申请释放多少次const size_t N = 10000;//1wstd::vector<TreeNode*> v1;v1.reserve(N);size_t begin1 = clock();for (size_t j = 0; j < Rounds; ++j){for (int i = 0; i < N; ++i){v1.push_back(new TreeNode);}for (int i = 0; i < N; ++i){delete v1[i];}v1.clear();}size_t end1 = clock();ObjectPool<TreeNode> TNPool;std::vector<TreeNode*> v2;v2.reserve(N);size_t begin2 = clock();for (size_t j = 0; j < Rounds; ++j){for (int i = 0; i < N; ++i){v2.push_back(TNPool.New());}for (int i = 0; i < N; ++i){TNPool.Delete(v2[i]);}v2.clear();}size_t end2 = clock();cout << "new cost time:" << end1 - begin1 << endl;cout << "object pool cost time:" << end2 - begin2 << endl;
}

在这里插入图片描述
可以看到效率的提升

http://www.cadmedia.cn/news/15264.html

相关文章:

  • 佛山建站软件网络营销的背景和意义
  • 国外校园网站建设镇江网站建设制作公司
  • 直播网站功能怎么做上海推广网络营销咨询热线
  • 在住房城乡建设部网站上哪里下载规范桂平seo快速优化软件
  • 建设小型网站需要什么技术中国十大知名网站
  • 网络组建与维护实训报告广州软件系统开发seo推广
  • 开发公司工程部年终工作总结seo完整教程视频教程
  • 大型网站制作小程序晋城今日头条新闻
  • 网站策划怎么写查网站流量的网址
  • 江苏建站速度忿各种手艺培训班
  • 做网站前端用什么技术好百度关键词点击价格查询
  • 小程序赚钱app西安seo优化工作室
  • 泉州企业网站制作哪家好网络推广的细节
  • 浙江网站建设多少钱怎么自己创建网页
  • 怎么用esc服务器做网站如何做平台推广赚钱
  • web前端框架有哪些搜索引擎优化师工资
  • 东莞国药官网网上商城百度优化软件
  • 网站建设运行环境搜索百度指数
  • 建设法律法规文本查询网站阿里云盘资源搜索引擎
  • 上海专业的网站建杭州网站设计制作
  • 富锦建设局网站北京百度关键词推广
  • 网站开发论文文献书籍武汉seo推广
  • 海外营销网站建设刷赞网站推广免费链接
  • 郑州网站推广哪家好论坛seo教程
  • 西安到北京高铁几小时优化seo公司哪家好
  • 广州市手机网站建设公司深圳seo优化方案
  • 外贸独立站建站哪家好网络服务器的功能
  • 大连大连建设工程信息网站优秀网站设计欣赏
  • 网站建设后怎么爱廷玖达泊西汀
  • qq业务代理网站建设十大广告公司