4、内存池.docVIP

  • 0
  • 0
  • 约6.29千字
  • 约 10页
  • 2017-08-12 发布于河南
  • 举报
1.为什么需要内存池 ??? 为什么需要内存池? a. 在大量的小块内存的申请和释放的时候,能更快地进行内存分配(对比malloc和free) b.减少内存碎片,防止内存泄露。 2.内存池的原理 ??? 内存池的原理非常简单,用申请一块较大的内存来代替N多的小内存块,当有需要malloc一块比较小的内存是,直接拿这块大的内存中的地址来用即可。 ??? 当然,这样处理的缺点也是很明显的,申请一块大的内存必然会导致内存空间的浪费,但是比起频繁地malloc和free,这样做的代价是非常小的,这是典型的以空间换时间。 ??? 一个典型的内存池如下图所示: 图一:一个典型的内存池 ? ??? 首先定义这样一个结构体: ?typedef struct MemoryBlock { char *Data ; //数据 std::size_t DataSize ; //总的大小 std::size_t UsedSize ; //已经用了的大小 MemoryBlock*Next ; } MemoryBlock; ??? 一个内存池就是这样一连串的内存块组成。当需要用到内存的时候,调用此内存池定义好的接口GetMemory(),而需要删除的时候FreeMemory()。 ??? 而GetMemory和FreeMemory干了什么呢?GetMemory只是简单返回内存池中可用空间

文档评论(0)

1亿VIP精品文档

相关文档