cocos2d-x节点(b2BlockAllocator.h)API

来源:互联网 发布:控制反转和依赖注入php 编辑:程序博客网 时间:2024/05/21 09:21

本文来自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.aspclass 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


原创粉丝点击