一个关于box2d和CCPhysicsSprite的问题,求解

前段时间在学习cocos2dx的时候,尝试着使用box2d物理引擎,出了访问空指针的情况。
在VS下调试,发现在使用CCPhysicsSprite::setB2Body的时候,有一些问题。
在调用setB2Body函数前,设置的参数b2Body *body中,
body->m_world->m_blockAllocator->s_blockSizeLookupInitialized 为 true
同时
body->m_world->m_blockAllocator->s_blockSizeLookup
body->m_world->m_blockAllocator->s_blockSizes
这两个成员正常。

但是调用进去setB2Body的栈以后,body->m_world->m_blockAllocator->s_blockSizeLookupInitialized 变为 false
同时
body->m_world->m_blockAllocator->s_blockSizeLookup
body->m_world->m_blockAllocator->s_blockSizes

这两个成员的地址变了,由最初的0x00cc7410 和 0x00cc7c30 变成了 0x0f9fde44 和 0x0f9ff7e8,
s_blockSizes 的值依旧为
{
16, // 0
32, // 1
64, // 2
96, // 3
128, // 4
160, // 5
192, // 6
224, // 7
256, // 8
320, // 9
384, // 10
448, // 11
512, // 12
640, // 13
};
但是s_blockSizeLookup 为全0了。
因此导致了CCPhysicsSprite的成员m_pB2Body保存的数据出现问题,后面如果在 b2BlockAllocator::Allocate访问s_blockSizeLookup,会取出错误的index0,继而导致了访问null pointer。

发生变化的这三个成员都是static的,其他的成员没有发生问题。

在以前的帖子中有位大侠解释说是静态数据没有同步的问题,并且给出了一次方案,把static的成员改成普通成员,然后通过指针指向一块静态数据区。
但是我查了一下,在box2d中有不少的static类型的成员,且不确定哪些可能还会有这个问题。

请大家帮忙指点一些迷津。是还有什么东西需要设置,还是怎么的?

PS:我使用的cocos2dx版本为2.2.5