coco2dx的内存管理问题

经常碰到内存的问题,需要能彻底解决


class BaseScene : public cocos2d::Scene
{
public:
    virtual bool init();
    CREATE_FUNC(BaseScene);
    cocos2d::Node* mUiRootNode;
}
bool MenuScene::init()
{
    mUiRootNode = CSLoader::createNode("test.csb");
    addChild(mUiRootNode);
    return true;
}

这样运行到一半就会崩溃,如果把mUiRootNode弄成局部变量就好了,
甚至我给场景类添加一个int类型的变量,只要在程序中修改这个int类型变量的值,也会崩溃。

网上有人说:
自定义每个类里的成员变量如果是继承自CCObject,在赋新值之前要先对新值retain(), 然后对旧值release(),这两个步骤不能省去或者调转。

但是我不知道具体怎么操作,这个问题困扰很久了,求教:2:

顶一下顶一下顶一下顶一下顶一下

bool MenuScene::init()
{
bool bRet = false;
do
{
CCDirector * pDirector;
CC_BREAK_IF( ! (pDirector = CCDirector::sharedDirector()) );
this->setContentSize(pDirector->getWinSize());
// success

     mUiRootNode = CSLoader::createNode("test.csb");
    addChild(mUiRootNode);

     bRet = true;
 } while (0);
 return bRet;

}

这样写,但是不建议直接继承Scene
应该继承Layer

貌似不行啊,你这样写是啥意思呢

移植到3.9版本好像没这个问题了