本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-x节点(b2BlockAllocator.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
// b2BlockAllocator进行内存管理,使得分配和使内存变得更加高效、快速。内存管理之SOA的实现
///cocos2d-x-3.0alpha0/external/Box2D/Common // b2BlockAllocator进行内存管理,使得分配和使内存变得更加高效、快速。内存管理之SOA的实现 #ifndef B2_BLOCK_ALLOCATOR_H #define B2_BLOCK_ALLOCATOR_H #include <Box2D/Common/b2Settings.h> const int32 b2_chunkSize = 16 * 1024; //一次分配内存大小 const int32 b2_maxBlockSize = 640; //块子节点大小的最大值 const int32 b2_blockSizes = 14; //可以申请块子节点大小的类型总数 const int32 b2_chunkArrayIncrement = 128; //块空间增量 struct b2Block; //块子节点结构体[链表实现]声明 struct b2Chunk; //块结构体声明 /// //这是一个小型的对象分配器,用于一次分配多个小对象 /// See: http://www.codeproject.com/useritems/Small_Block_Allocator.asp class b2BlockAllocator { public: b2BlockAllocator(); ~b2BlockAllocator(); //分配内存,当size>b2_maxBlockSize则直接用b2Alloc分配 void* Allocate(int32 size); //释放内存,当size>b2_maxBlockSize则直接用b2Free释放 void Free(void* p, int32 size); //清空内存 void Clear(); private: b2Chunk* m_chunks; //当前块的头指针 int32 m_chunkCount; //当前已使用的块空间节点总数 int32 m_chunkSpace; //当前已申请的块空间节点总数 b2Block* m_freeLists[b2_blockSizes]; //未被使用的内存块链表类型数组,保存了其不同类型链表的头指针 static int32 s_blockSizes[b2_blockSizes]; //申请的块大小类型数组 static uint8 s_blockSizeLookup[b2_maxBlockSize + 1]; //根据要申请块的大小获取其类型索引的数组 static bool s_blockSizeLookupInitialized; //是否已初始化s_blockSizeLookup数组,标志变量 }; #endif