
Box2D源码
黄建斌
我们坚持一件事情,并不是因为这样做了有效果,而是坚信,这样做是对的。
展开
-
Box2D源码分析:小型对象分配器
在某些场合下,我们会使用到非常小的对象(甚至可能只有数byte),其生命周期可能也很短,如果每次都通过malloc或者new在堆上分配内存,用后销毁,效率太低。于是维护一些不定尺寸并可扩展的内存池,当小对象需要内存分配时,直接从早已准备好的内存池上返回一块大小合适的内存。注意,当内存使用完毕后,我们需要返回其内存到内存池中,而不是销毁它。本文以Box2D为例对SOA(smaller objec原创 2014-03-10 18:33:45 · 1179 阅读 · 0 评论 -
Box2D源码分析:栈内存分配B2StackAllocator
B2StackAllocator主要是为了运行一个步长时满足box2d需要的临时内存空间,作为栈分配器来防止单步堆分配。(这是官方的说明,我没弄懂是什么意思,有知道的希望能说明一下:-D)首先给出大概的图给大家一个感受,对于代码更容易理解。这里的stack应该不是数据结构中stack的意思,但是它仍然使用了数据结构stack的先进后出(FILO)的方式。所以Allocate和Free需要成原创 2014-03-11 16:04:23 · 1433 阅读 · 0 评论