前段时间在调查内存池实现时, 无意中看到了以下的链接:
http://eli.thegreenplace.net/2008/10/17/memmgr-a-fixed-pool-memory-allocator/
这种方案很新潮, 所有的内存分配单元都由一个数组(栈空间)分配,没有其他的系统调用,移植性非常好。
适合情景:知道程序运行中,分配的总内存的上限, 如何上限的值小于栈上限, 就可以使用此方案。可以避免内存的泄漏。
昨天花了点时间看了一下逻辑:
1. 用一个单向循环链表存储空闲的内存块
2. 释放使用的内存时, 根据内存地址升序插入到恰当的位置。 如果地址是连续的,对相邻的块进行合并。