共享Windows下C++库之内存池篇

本文介绍了内存池的概念,特别是在现代PC中,尽管操作系统内存管理高效,但内存池仍有其价值,如减少内存管理开销和页面错误。文章详细阐述了基于SGI改进的内存池组件,增加了多线程支持、内存分配上限和多种分配策略,并讨论了内存分配策略的选择。虽然内存池未提供部分释放接口,作者提供了下载链接供读者试用并欢迎反馈建议。
摘要由CSDN通过智能技术生成

目录结构

  1. 内存池简介
  2. 介绍分析内存池改进及所使用技术
  3. 如何配合STL容器
  4. 性能测试
  5. 如何使用

 

内存池简介:

关于内存池的介绍,好文很多(这里这里这里,还有这里…)。在如今的PC机器上,内存池的作用也没有那么明显了,操作系统对内存的管理已经相当不错。但,为什么还需要内存池呢?两点:1. 减少内存管理负担,提升性能。(比如,在进行密集型算法前申请足够内存内存,然后使用,最后统一释放) 2.减少页面错误(页面错误是由虚拟内存与物理内存交换导致的),减少内存碎片,提高性能。

 

介绍分析内存池改进及所使用技术:

该套内存池组件是由SGI内存改造而来,其原理请参考《STL源码剖析》,或者参阅这里,借用一幅图来说明

malloc2 

在此基础上,我增加了几个重要的改进:

  • 增加模板参数是否为多线程,根据该参数判断是否需要使用Lock及变量是否需要volatile修饰。
  • 增加模板参数分配区块上限,默认为256。
  • 增加模板参数分配内存策略,提供三种分配方式:VirtualAlloc、HeapAlloc、malloc。
  • 增加对已申请内存管理,集中释放。

在此,讲下内存分配策略的选择。

 

  • 0
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值