當我的角色獲勝或失去遊戲時,我正在切換場景。我收到一條消息,指出釋放的指針未分配。改變場景時遊戲崩潰,指針被釋放不被分配
有時,遊戲不會崩潰,它會返回到遊戲視圖。但有時遊戲在這條線上主要崩潰:
int retVal = UIApplicationMain(argc, argv, nil, @"AppController");
錯誤是「不良訪問」;
cocos2d::CCDirector::sharedDirector()->replaceScene(GameWon::scene());
然後在GameWon.cpp我創建了一個新的遊戲場景,開始一個新的遊戲:
cocos2d::CCDirector::sharedDirector()->replaceScene(Controller::scene());
不知道是什麼原因導致
我使用CCdirector切換到結束屏幕這個問題。奇怪的是,它並不總是在模擬器上崩潰。有小費嗎?
編輯
於是我發現了什麼問題,我只是不知道爲什麼這是一個問題。顯然,當我創建一個新場景時,我的控制器的析構函數被調用。在這個析構函數中,我釋放了我的模型對象:
Controller::~Controller()
{
free(pModel);
}
當我沒有釋放模型對象時,它就像一個魅力。然而,在我的構造函數初始化我這樣做:
pModel = Model::create();
所以我不知道爲什麼pModel將是被釋放的指針,而不是分配呢?