bullet中的内存池
1。概念(见于Baidu) 内存池(Memory Pool)是一种内存分配方式。 通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。 内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。 2.Bullet内存池(btPoolAllocator.h ) 内存池可以是反复的new delete更有效率,而且很有效的避免了内存碎片。btPoocclAllocator提供了一个简单的内存池,包括初始化分配足够数量的内存,申请内存等常用的方法。这个内存池比较好用于反复分配释放同一个对象,初始化了N*size(object)大小的内存,每次分配大小是一个Object。 1 class btPoocclAllocator 2 { 3 int m_elemSize; //每个对象的大小 4 int m_maxElements;//最大容量 5 int m_freeCount;//剩余的个数 6 void* m_firstFree;//每次分配的起点 7 unsigned char* m_pool; /