1.cocos2dx内存管理和CCArray,CCMenuItem

  次阅读 作者:智能小宝 来源:互联网 2015-09-27 15:29 我要评论(0)

1 C++内存管理

A

栈上的空间

自生自灭,不用管理

B

堆上的空间

手动new,手动delete,否则产生内存泄漏

2

内存管理的难处

管理原则,谁申请谁释放

3

内存的智能管理

主要有两种实现智能管理内存的技术,一种是引用计数,一是垃圾回收。

引用计数:通过给每个对象维护一个引用计数器,记录该对象当前被引用的次数。当对象增加一次引用时,计数器加1;而对象失去一次引用时,计数器减1;当引用计数为0

时,标志着该对象的生命周期结束,自动触发对象的回收释放。引用计数解决了对象的生命周期管理问题,但堆碎片化和管理烦琐的问题仍然存在。

垃圾回收:它通过引入一种自动的内存回收器,试图将程序员从复杂的内存管理任务中完全解放出来。它会自动跟踪每一个对象的所有引用,以便找到所有正在使用的对象,然后释放其余不再需要的对象。垃垃圾回收器通常是作为一个单独的低级别的线程运行的,在不可预知的情况下对内存堆中已经死亡的或者长时间没有使用过的对象进行清除和回收。

4 cocos2dx内存管理

A

手动管理

Cocos2dx采用工厂方法创建对象,所有生成的对象均在堆上,所以Cocos2dx采用了引用计数的方法管理内存。具体实现:

B

案例说明:

T09Memory.h

#ifndef

_T09Memory_

#define

_T09Memory_

#include

"cocos2d.h"

USING_NS_CC;

class

T09Memory :public

CCLayer

{

public:

static

CCScene *

scene();

CREATE_FUNC(T09Memory);

bool

init();

CCSprite *

spr;

void

mySchedule(float

dt);

};

#endif

T09Memory.cpp

#include

"T09Memory.h"

CCScene *

T09Memory::scene()

{

CCScene *scene

= CCScene::create();

T09Memory *layer

= T09Memory::create();

scene->addChild(layer);

return

scene;

}

bool

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...