在使用 cocos2d-x 过程中,遇到了一个如何正确释放CCSpriteFrame的问题,请教一下。
在Visual Studio下遇到如下所示的错误提示信息:
This may be due to a corruption of the heap, which indicates a bug in XXXXX.exe or any of the DLLs it has loaded.
我的代码大概完成这个目的:创建CCSpriteFrame用于显示精灵动画,然后将CCSpriteFrame释放掉。
大概流程如以下代码所示:
CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();
cache->addSpriteFramesWithFile(“sprite.plist”);
CCMutableArray<CCSpriteFrame*>* pAnimFrames = new CCMutableArraycocos2d::CCSpriteFrame*(3);
CCSpriteFrame* spriteFrame1 = cache->spriteFrameByName(“animation_1.png”);
CCSpriteFrame* spriteFrame2 = cache->spriteFrameByName(“animation_2.png”);
CCSpriteFrame* spriteFrame3 = cache->spriteFrameByName(“animation_3.png”);
pAnimFrames->addObject(spriteFrame1)
pAnimFrames->addObject(spriteFrame2)
pAnimFrames->addObject(spriteFrame3)
for(int i=0; icount(); i++)
{
CCSpriteFrame* pSpriteFrame = pAnimFrames->getObjectAtIndex(i);
if(pSpriteFrame)
{
pSpriteFrame->release();
}
}
delete pAnimFrames;
问题就出在了pSpriteFrame->release()这一行。如果我把这行删掉,就没有错误了。
问题:
1.请高手指点怎么正确释放CCSpriteFrame对象。
2.cocos2d-x释放对象的原则是什么?比如用哪个API创建的对象需要开发者自己调用release()去释放的等等此类问题。