为何在碰撞检测的函数里执行setDynamic(false)会出错?

为什么在碰撞检测的函数里执行到这一行会中断?中断原因是?
中断原因:R6010 -abort() has been called

bool PlayScene::onContactbegein(const PhysicsContact& contact)
{
auto spriteA = (Sprite*)contact.getShapeA()->getBody()->getNode();
auto spriteB = (Sprite*)contact.getShapeB()->getBody()->getNode();

if (spriteA->getTag() == 1 && spriteB->getTag() == 2)
{
sprite->getPhysicsBody()->setDynamic(false); //中断原因:R6010 -abort() has been called

}
return true;
}
网上说 R6010 -abort() has been called原因有这几个:
1.非法指针访问和内存泄漏
2.大家再查查吧,一定是指针出现问题了。设置的指针范围跟你运行的不对
3.指针访问内存越界出现问题。
4.是因为不支持中文。
5.内存不够分配
6.当时后来检查发现的问题应该是多线程访问资源出的问题。
7.检查一下exe和dll是否混用的不同版本的crt

这个sprite->getPhysicsBody()->setDynamic(false);我之前也用过,用了后没有半点反应。
不过我不是在碰撞处理中使用的。后来忘记怎么解决的了。
反正我就不用这个cocos封装的引擎,真的很垃圾,效率不说,BUG一大堆。你自己看看官方那个cpp-test里的demo,
简直是在搞笑,就连官方的DEMO都BUG层出不穷,不知道为啥他们要坚持使用这个物理引擎。BOX2D才是王道。