cocos2d学习发现一个C++的一个盲点,
2014-02-13 00:51
387 查看
void GameLayer::runBullteAction(float dt)
{
static unsigned int i = 1;
/*if( i >= 50)
{
bullteArray = weaPon->createNormalWeapon();
i = 1;
CCLog("i= %d\n",i);
}*/
if( i >= 10)
{
i = 1;
//createNormalWeapon返回一个10的CCArrary
CCArray* bullte = weaPon->createNormalWeapon();
bullteArray = bullte;
}
CCLog("i=%d\n",i);
CCLog("count=%d\n",bullteArray->count());
CCSprite* bullte = (CCSprite*)bullteArray->objectAtIndex(i);
CCPoint playPo = player->getPosition();
int bx,by;
bx = playPo.x + player->getContentSize().width / 7;
by = playPo.y + player->getContentSize().height / 4;
bullte->setScale(0.2);
bullte->setPosition(ccp(bx,by));
bullte->setTag(1);
//this->addChild(bullte);
CCFiniteTimeAction* action = CCMoveTo::create(2,ccp(bx,y));
CCFiniteTimeAction* actionDone = CCCallFuncN::create(this,callfuncN_selector(GameLayer::runActionFiniched));
bullte->runAction(CCSequence::create(action,actionDone,NULL));
//this->addChild(bullte);
CCLog("count=%d\n",bullteArray->count());
i++;
}
这是cocos2d定时器的执行函数,当这个函数运行到执行到12次的时候就报错了,想了一个多钟头,发现了学习C++的一个盲点,分析了一下,当函数执行第11次的时候是没有问题的,此时生成了一个CCArray的指针,当运行到第12次的时候,因为第11次的CCArray是返回的局部指针,当运行完第11次的时候,系统回收了CCArray的内存,此时buttarray指向的是一个未定义的内存,肯定报错了,是一个野指针错误。记录下来,类似的错误别犯了!!!!
{
static unsigned int i = 1;
/*if( i >= 50)
{
bullteArray = weaPon->createNormalWeapon();
i = 1;
CCLog("i= %d\n",i);
}*/
if( i >= 10)
{
i = 1;
//createNormalWeapon返回一个10的CCArrary
CCArray* bullte = weaPon->createNormalWeapon();
bullteArray = bullte;
}
CCLog("i=%d\n",i);
CCLog("count=%d\n",bullteArray->count());
CCSprite* bullte = (CCSprite*)bullteArray->objectAtIndex(i);
CCPoint playPo = player->getPosition();
int bx,by;
bx = playPo.x + player->getContentSize().width / 7;
by = playPo.y + player->getContentSize().height / 4;
bullte->setScale(0.2);
bullte->setPosition(ccp(bx,by));
bullte->setTag(1);
//this->addChild(bullte);
CCFiniteTimeAction* action = CCMoveTo::create(2,ccp(bx,y));
CCFiniteTimeAction* actionDone = CCCallFuncN::create(this,callfuncN_selector(GameLayer::runActionFiniched));
bullte->runAction(CCSequence::create(action,actionDone,NULL));
//this->addChild(bullte);
CCLog("count=%d\n",bullteArray->count());
i++;
}
这是cocos2d定时器的执行函数,当这个函数运行到执行到12次的时候就报错了,想了一个多钟头,发现了学习C++的一个盲点,分析了一下,当函数执行第11次的时候是没有问题的,此时生成了一个CCArray的指针,当运行到第12次的时候,因为第11次的CCArray是返回的局部指针,当运行完第11次的时候,系统回收了CCArray的内存,此时buttarray指向的是一个未定义的内存,肯定报错了,是一个野指针错误。记录下来,类似的错误别犯了!!!!
相关文章推荐
- 发现一个学习C++很有用的博客
- 发现一个好的学习C++的网址。。
- 【C/C++学习笔记】判断一个点是否在多边形内部的例子
- c++学习之用c++写一个教务管理系统
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(1) f(x) = 2f(x-1) + x^2
- c++ 基础学习: 左值 概念cocos2d-x3.0的实际应用
- cocos2d-x学习笔记(一)C++基础知识
- 一个实用主义者的观点:如何学习使用C++
- 今天发现这是一个不错的学习地方,以后常来转转
- cocos2d-x学习(4)---游戏实例开发:一个简单的射击游戏三
- 在学习技术的过程中就是要一步一个脚印,总有一天会豁然开朗,不知不觉的发现所有知识都串起来了,一件很神奇的事情
- 如何学习使用C++一个实用主义者的观点
- 【学习笔记】cocos2d 如何绘制一个字符串
- Cocos2D-X学习笔记 3 从一个场景切换到还有一个场景
- Cocos2D-X学习3:创建一个新的场景
- C/C++日常学习总结(第十六篇)分析IA-64和IA-32位机器上同一个程序运行,前者报错,后者正常
- 发现一个 学习bootstrap 的学习网站
- 无意之中发现的一个C++的错误
- 【转】 C++易混知识点4: 自己编写一个智能指针(Reference Counting)学习auto_ptr和reference counting
- C/C++日常学习总结(第二篇)结构体和类的大小及区别&为什么是new一个对象而不是malloc