本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-x节点(b2StackAllocator.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
B2StackAllocator主要是为了运行一个步长时满足box2d需要的临时内存空间,作为栈分配器来防止单步堆分配。
///cocos2d-x-3.0alpha0/external/Box2D/Common // B2StackAllocator主要是为了运行一个步长时满足box2d需要的临时内存空间,作为栈分配器来防止单步堆分配。 #ifndef B2_STACK_ALLOCATOR_H #define B2_STACK_ALLOCATOR_H #include <Box2D/Common/b2Settings.h> //栈中内存池的大小 const int32 b2_stackSize = 100 * 1024; // 100k const int32 b2_maxStackEntries = 32; //栈元素的最大数量 //栈实体定义 struct b2StackEntry { char* data; //头指针 int32 size; //大小 bool usedMalloc; //是否使用 }; // 这是一个栈分配器用于每一步都快速的分配 // 你必须成对使用allocate/free这对函数。 // 如果你使用allocate/free次数不同时,将会出现断言。 class b2StackAllocator { public: b2StackAllocator(); //构造函数 ~b2StackAllocator(); //析构函数 void* Allocate(int32 size); //申请内存函数 ,参数说明:size :需要申请的内存大小 ,返 回 值:申请的内存头指针 void Free(void* p); //释放内存函数 参数说明:p :释放内存的头指针 int32 GetMaxAllocation() const; //获取已申请的内存容量的最大值 返 回 值:曾经进栈过所有元素【不管现在是否出栈】使用的内存容量 private: char m_data[b2_stackSize]; //栈的内存池,用于栈子节点的内存开辟 int32 m_index; //在栈的内存池中,已使用的内存大小 int32 m_allocation; //栈中的所有元素使用内存大小 int32 m_maxAllocation; //曾经进栈过所有元素【不管现在是否出栈】使用的内存容量 注意该变量在对象销毁之前只增不减 b2StackEntry m_entries[b2_maxStackEntries]; //栈实体的数组 int32 m_entryCount; //栈中元素的数量 }; #endif