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

做旅游项目用哪家网站好网站开发建设费用包括那些

做旅游项目用哪家网站好,网站开发建设费用包括那些,寮步仿做网站,四川省建设厅招标网站内存池介绍(Memory Pool): 它是一种内存分配方式#xff0c;通过预先分配和复用内存块。 在真正使用内存之前#xff0c;先申请一大块内存备用。当有新的内存需求时#xff0c;就从内存池中分出一部分内存块#xff0c; 若内存块不够再继续申请新的内存。如果我们不需要…内存池介绍(Memory Pool): 它是一种内存分配方式通过预先分配和复用内存块。 在真正使用内存之前先申请一大块内存备用。当有新的内存需求时就从内存池中分出一部分内存块 若内存块不够再继续申请新的内存。如果我们不需要继续使用当前的内存块了 那么就还给内存池。 为什么要使用内存池 1、内存分配和释放通常涉及系统调用如malloc和free | new 和 delete 这些系统调用需要用户态和内核态之间的切换频繁的系统调用开销较大。内存池是提前分配一块内存后续我们的内申请都是从内存池中申请不需要进行系统调用从而降低了开销。 2、当程序频繁地申请和释放不同大小的内存块时容易导致内存碎片。 3、传统的内存分配和释放通常涉及到复杂的算法和数据结构如堆以及可能的线程同步操作这些都会消耗较多的CPU时间。而内存池通过预先分配并管理固定大小的内存块可以大大简化这些操作从而提高效率。 所以如果我们需要频繁分配和释放小块内存 或者 需要大量内存分配和释放那么建议使用内存池来高效管理内存。 内存池的实现 内存池的相关接口、必要的属性。MemoryPool.h #ifndef _MEMORY_POOL_H_ #define _MEMORY_POOL_H_#include iostream #include string.h #include vector #include mutex#define SIZE 1024 * 1024 class MemoryPool{ public:// 创建一个内存池 单列模式因为整个项目只需要一个内存池static MemoryPool getInstance(){// 内存池默认大小是 1G 每块大小是1024字节static MemoryPool memoryPool_( 1024* SIZE , 1024); // 1024 1KB * 1024 1mb *1024 1gb return memoryPool_;}void *calloc_locate(size_t size); // 分配内存void delete_locate(void *ptr); // 释放内存private:MemoryPool(size_t pool_size , size_t block_size);~MemoryPool();void init_memPool(); // 初始化内存池char *pool_; // 内存池指针size_t pool_size_; // 内存池的大小size_t block_size_; // 每一块内存的大小std::vectorbooluse_block_; // 每个内存块的使用情况std::mutex mutex_; // 由于内存池是共享资源 , 所以在进行操作时要加锁 };#endif // _MEMORY_POOL_H_对相关接口进行实现 MemoryPool.cpp #include MemoryPool.hMemoryPool::MemoryPool(size_t pool_size , size_t block_size){pool_size_ pool_size;block_size_ block_size;pool_ new char[pool_size];std::coutMemory Start: static_castvoid *(pool_)std::endl;init_memPool();}void MemoryPool::init_memPool(){// 内存分成的块数 内存池的总大小 / 每块的大小 use_block_.resize( pool_size_/block_size_ , false);}MemoryPool::~MemoryPool(){// 对整个内存池资源进行清理if( pool_ ){delete[] pool_;pool_ nullptr;pool_size_ 0;block_size_ 0;use_block_.reserve(0);}}void *MemoryPool::calloc_locate(size_t size){if( size block_size_ ){ // 如果我们要分配的内存 大于我们每块的大小 return nullptr;}std::unique_lockstd::mutex lock(mutex_);for(int i 0 ;i pool_size_ ;i block_size_ ){if( !use_block_[i/block_size_]){ //当前块没有被使用过use_block_[i/block_size_] true;std::coutsuccessful calloc_locate ptr: static_castvoid *(pool_ i) std::endl;return pool_ i ; }}std::coutFailed calloc_locate ptr: std::endl;// 内存池资源耗尽的情况return nullptr;}void MemoryPool::delete_locate(void *ptr){if( !ptr ) return ;if( ptr pool_ || ptr pool_ ){ // 需要释放的内存不在我们内存池范围内return ;}std::coutdelete ptr: std::hexptrstd::endl;// 将指针进行对齐/*ptr 100 - 需要删除内存的起始位置pool_ ----- 内存池的起始位置 */std::unique_lockstd::mutexlock;auto index (reinterpret_castchar *(ptr) - pool_ )/block_size_;if( index 0 index use_block_.size()){use_block_[index] false;std::coutDelete successfulstd::endl;return ;}std::coutDelete Failedstd::endl; }测试demo test.cpp #include MemoryPool.hint main(int ,char **){MemoryPool pool MemoryPool::getInstance();// 分配1kbchar *ptr reinterpret_castchar *(pool.calloc_locate(1024));if(!ptr) return 1;std::coutptr: static_castvoid *(ptr)std::endl;char *ptr2 reinterpret_castchar *(pool.calloc_locate(800));if(!ptr2) return 1;std::coutptr: static_castvoid *(ptr2)std::endl;pool.delete_locate(ptr);return 0; }结果分析 程序开始 创建一个内存池的单例 并申请一大块内存 1024 x 1024 x 1024-1GB 每一块的大小是 1024 所以我们的内存池里面 有1024 x 1024 个内存块。 vectoruse_block_ 会记录每一个内存块的使用情况 如果被使用则标记为 true , 没有被使用就标记为 false。 第一步我们从内存池中分配 1024 个字节由于我们的每一个块大小是 1024 所以他会返回第一个内存块的起始地址。也就是内存池的起始位置。 第二步 我们再次从内存池中分配800个字节 此时第一个内存块已经被使用 并且每一个块大小是 1024那么理所当然返回第二个内存块的起始地址。因为第二个内存块已经足够放下了。 数据分析 第一个内存块返回的起始地址0x7facb1767010. 第二个内存块返回的起始地址0x7facb1767410 两者相差400此时是 16 进制那么我们将其转换成 10 进制 之后是 1024 为一个内存块的大小 4 * 16 * 16 - 》 1024. 所以我们的内存池完美实现 。
http://www.zqtcl.cn/news/961291/

相关文章:

  • 泰安网站建设收费标准直播视频app
  • 网站路径问题优秀的网站有哪些
  • 建设网站使用的工具大连免费网站制作
  • 专业的网站优化扬州市城乡建设网站
  • 射阳做网站的公司在哪品牌建设是指
  • 沈阳做网站好的网站分析论文
  • 做熟食的网站美食网站网站开发后端书籍
  • 做模板下载网站挣钱吗网站建设专业导航网站
  • 网站目录结构html静态网站作品
  • 南通建设局网站分类门户网站系统
  • 合肥网站建设企业秒玩小游戏入口
  • 个人做网站开发个人网站备案取名
  • 替代wordpress 搜索seo优化排名易下拉程序
  • asp.net 网站 方案小程序开发是前端还是后端
  • 网站开发 介绍 回扣建设项目验收在哪个网站公示
  • 建立网站免费如何做物流网站
  • 重庆网站设计费用wordpress自动翻页
  • 燕郊做网站的公司seo快速优化
  • 建了网站却搜不出来设计网站室内
  • 网站运营维护新闻摘抄大全
  • 怎么优化网站的单个关键词排名wordpress 安装百度编辑器
  • led网站建设方案模板做炒作的网站
  • 注册网站免费注册qq邮箱seo服务销售招聘
  • 翻译做网站php做网站好学吗
  • 网站模板 seo响应式网站内容布局
  • 石家庄住房和城乡建设部网站企业自助建站系统怎么建
  • 建设企业网站都需要啥网站开发 自我评价
  • 购物网站主页怎么做网站建设的优势何江
  • 宿州网站建设多少钱广西壮族自治区医保网上服务大厅
  • 宾馆酒店 网站模板wordpress手动获取相关文章