我在http://msdn.microsoft.com/en-us/library/ee292117.aspx和http://msdn.microsoft.com/en-us/library/ee292134.aspx上看到 Microsoft 为专业人士提供宏和类分配器,但我不确定每种缓存策略是什么,如何使用它们。有人可以解释何时使用这些部分吗?
- 缓存模板
cache_freelist
-cache_freelist
模板类维护一个大小为 的内存块的空闲列表Sz
。当空闲列表已满时,它用于operator delete
释放内存块。当空闲列表为空时,它用于operator new
分配新的内存块。空闲列表的最大大小由参数max class
中传递的类决定。Max
每个内存块都保存Sz
可用内存的字节数以及所需的operator new
数据operator delete
。cache_suballoc
-cache_suballoc
模板类将释放的内存块存储在一个长度无限的空闲列表中,使用,并在空闲列表为空时freelist<sizeof(Type), max_unbounded>
从分配的更大块中重新分配内存块。operator new
每个块都包含Sz * Nelts
可用内存的字节数以及所需的operator new
数据operator delete
。分配的块永远不会被释放。cache_chunklist
- 此模板类用于operator new
分配原始内存块,在需要时为内存块分配存储空间;它将释放的内存块存储在每个块的单独空闲列表中,并operator delete
在其内存块均未使用时用于释放块。每个内存块都保存Sz
着可用内存的字节数和一个指向它所属块的指针。每个块包含Nelts
内存块、三个指针、一个 int 和所需的operator new
数据operator delete
。
我自己写了几个分配器,但是这个文档只是......令人困惑。