读书人

VS2010环境停用cocos2d-x写的程序出了

发布时间: 2013-07-08 14:13:00 作者: rapoo

VS2010环境下用cocos2d-x写的程序出了0xc0000005
出错段代码如下:
void CUILevels::SetupMaxLevScore()
{

for(int i=0; i<m_maxLevImage.size(); i++)
{
CCLog("%d",m_maxLevImage.size());
int totalNums = m_saveData.m_levData[i].minDataList.size();
int errorNums = 0;
for(int iMinH = 0; iMinH<totalNums; iMinH++)
{
if( m_saveData.m_levData[i].minDataList[iMinH].hScore < 60&&m_saveData.m_levData[i].minDataList[iMinH].hScore!=0){
errorNums++;
}
}
char xxx[12];

sprintf(xxx,"%d/%d", errorNums,totalNums);
CCLog(xxx,"%d/%d", errorNums,totalNums);
CCLabelTTF *pFont = (CCLabelTTF*)m_maxLevImage[i]->getChildByTag(2);
//pFont->setString(xxx);
}
}
注释了最后一句话以后就能运行,不过到里面选择关卡的时候也崩 Visual?Studio?2010 Cocos2d-x
[解决办法]
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

判断是否越界访问,可以在数组的最后一个元素之后对应的地址处设置数据读写断点。如果该地址对应其它变量干扰判断,可将数组多声明一个元素,并设置数据读写断点在该多出元素对应的地址上。

[解决办法]


sprintf(xxx,"%d/%d", errorNums,totalNums);
CCLog(xxx,"%d/%d", errorNums,totalNums);
CCLabelTTF *pFont = (CCLabelTTF*)m_maxLevImage[i]->getChildByTag(2);
if(0 == pFont)
{
// error report!
}
else
{
pFont->setString(xxx);
}

[解决办法]
pFont 这个指针是否真的返回成功了呢?判断一下,看样子是你的函数返回指针出错了

读书人网 >C++

热点推荐