内存池分析(部分).docxVIP

  • 4
  • 0
  • 约2.29千字
  • 约 10页
  • 2016-11-25 发布于重庆
  • 举报
内存池分析(部分)

内存池实现方案一 方案的整体架构,如下: 图1.内存池架构图 结构中主要包含block、list 和pool这三个结构体,block结构包含指向实际内存空间的指针,前向和后向指针让block能够组成双向链表;list结构中free指针指向空闲 内存块组成的链表,used指针指向程序使用中的内存块组成的链表,size值为内存块的大小,list之间组成单向链表;pool结构记录list链表的头和尾。 内存跟踪策略 该方案中,在进行内存分配时,将多申请12个字节,即实际申请的内存大小为所需内存大小+12。在多申请的12个字节中,分别存放对应的list指针(4字节)、used指针(4字节)和校验码(4字节)。通过这样设定,我们很容易得到该块内存所在的list和block,校验码起到粗略检查是否出错的作用。该结构图示如下: 图2.内存块申请示意图 图中箭头指示的位置为内存块真正开始的位置。 内存申请和释放策略 申请:根据所申请内存的大小,遍历list链表,查看是否存在相匹配的size;     存在匹配size:查看free时候为NULL       free为NULL:使用malloc/new申请内存,并将其置于used所指链表的尾部       free不为NULL:将free所指链表的头结点移除,放置于used所指链表的尾部     不存在匹配size:新建list,使用malloc/

文档评论(0)

1亿VIP精品文档

相关文档