我在CCLayer的继承类里定义了一个CCMutableArray的成员对象,在该类的touchEnd事件中向 CCMutableArray 添加一个sprite。代码片段如下:
SpriteMoveLayer::SpriteMoveLayer(void)
{
cakes=new CCMutableArray<CCObject*>(10);
cakes->autorelease();
}
-----
void SpriteMoveLayer::ccTouchesEnded(CCSet* set,CCEvent* event){
CCSprite* testS=CCSprite::spriteWithFile(“ball.png”);
cakes->addObject(testS );
}
在执行到cakes->addObject( testS );时,会报错,弹出窗口内容:
MyTest2.exe 中的 0x00c559da (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0xcdcdcdc1 时发生访问冲突
中段后,vs2010会打开一个cpp文件Microsoft Visual Studio 10.0VCcrtsrcdbgdel.cpp,定位到下面这一行:
/* verify block type */
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
我把代码稍作修改,改为
void SpriteMoveLayer::ccTouchesEnded(CCSet* set,CCEvent* event){
cakes=new CCMutableArray<CCObject*>(10);
cakes->autorelease();
CCSprite* testS=CCSprite::spriteWithFile("ball.png");
cakes->addObject( testS );
}
就不报错了,好奇怪啊。。。。