一个超简单地内存池.docVIP

  • 2
  • 0
  • 约6.65千字
  • 约 18页
  • 2019-11-04 发布于安徽
  • 举报
实用文档 大全 一个简单的内存池Memory-Pool SUNNY.MAN 内存池(Memory Pool)是一种内存分配方式。 通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。有不少地方内存分配不允许失败. 作为在这些情况下确保分配的方式开发者创建了一个已知为内存池(或者是 mempool )的抽象. 这种内存的分配方式优点是内存分配肯定成功,缺点在于占用大量内存。一般来说做为缓存我强烈建议使用循环队列。当然不得不用的情况下可以使用所谓的“内存池”。一块固定的内存,被分成很多小块应用在不同的地方。当不再使用时把这小块归还给内存池,再使用的时候,内存池根据一定的算法,重新划分一块符合要求的内存给需要的线程。一般来说内存池的结构如下图所示: 结构中主要包含block、list 和pool这三个结构体,block结构包含指向实际内存空间的指针,前向和后向指针让block能够组成双向链表;list结构中free指针指向空闲内存块组成的链表,used指针指向程

文档评论(0)

1亿VIP精品文档

相关文档