持续更新吧。 刚开始看了一些。

一,CCObject  提供引用计数

  1,unsinged int m_uReference; //此为CCOBject的引用计数,初始化为 1; new CCObject();起引用计数为1。 这一点,与oc内存管理一致,不多写啦。

  2, AutoRelease();

  CCPoolManger::sharedPoolManger()->AddObject(this);//将this 放入 AutoReleasePool;

  其中CCPoolManger是一个单例,管理多个CCAutoreleasePool;

  CCPoolManger的成员变量 CCAutoreleasePool *m_pCurReleasePool 为当前生效的垃圾回收器;

  CCPoolManger的成员变量 CCArray *m_pReleasePoolStack 可管理多个垃圾回收器

  CCPoolManger 比较重要的方法:

  void push(); 创建一个新的垃圾回收器,并且加入到动态数组 m_pReleasePoolStack;

  void CCPoolManger::push()

  {

    CCAutoreleasePool *poll = new CCAutoreleasePool();

    m_pCurReleasePool = poll; // 将新创建的poll赋给了 curReleasePool; 调用这个函数, 生效的ReleasePool会重新生成。

    m_preleasePoolStack -> addObject(poll); //加入到动态数组。说明,pCurReleasePool 总是在动态数组 index==0 的位置;

    poll->release();    

  }

  void pop(); 清空m_pCurReleasePool, 并且把m_preleasePoolStack 中下一个 CCAutoReleasePool赋给 m_pCurReleasePool;

  void CCPoolManger::pop()

  {

    if(!m_pCurReleasePoll) return;

    int count = m_pReleasePoolStack->count();

    if(count>1)

    {

      m_pReleasePoolStack->removeObjectAtIndex(count-1);

      m_pCurReleasePool = (CCAutoReleasePoll*)m_pReleasePollStack->objectAtIndex(count-2);

    }

  }

  还有一个方法,void addObject(CCObject* object); //此方法,是将 object 加入到 m_pCurReleasePoll中。

  另一个重要的类: CCAutoReleasePool;  

  里面有保存CCObject的动态数组:m_pManagedObjectArray; 还应有对应的 addObject 与 RemoveObject方法

cocos2dx 内存管理机制的更多相关文章

  1. 2、COCOS2D-X内存管理机制

    在C++中.动态内存分配是一把双刃剑,一方面,直接訪问内存地址提高了应用程序的性能,与使用内存的灵活性.还有一方面.因为程序没有正确地分配与释放造成的比如野指针,反复释放,内存泄漏等问题又严重影响着应 ...

  2. 【转】cocos2dx 内存管理机制

    原文地址: http://www.zaojiahua.com/memory-management.html cocos2dx采用的是在堆上分配内存空间,想想看你在写程序的时候对于cocos2dx中的类 ...

  3. cocos2dx内存管理机制

    参考以下两篇文章 http://blog.csdn.net/ring0hx/article/details/7946397 http://blog.csdn.net/whuancai/article/ ...

  4. cocos2d-x内存管理

    Cocos2d-x内存管理 老师让我给班上同学讲讲cocos2d-x的内存管理,时间也不多,于是看了看源码,写了个提纲和大概思想 一.   为什么需要内存管理 1. new和delete 2. 堆上申 ...

  5. 【Cocos2d-x 3.x】内存管理机制与源码分析

    侯捷先生说过这么一句话 :  源码之前,了无秘密. 要了解Cocos2d-x的内存管理机制,就得阅读源码. 接触Cocos2d-x时, Cocos2d-x的最新版本已经到了3.2的时代,在学习Coco ...

  6. cocos2dx的内存管理机制

    首先我们必须说一下c++中变量的内存空间的分配问题,我们在c++中写一个类,可以在栈上分配内存空间也可以使用new在堆上分配内存空间,如果类对象是在栈上分配的内存空间,这个内存空间的管理就不是我们的事 ...

  7. Cocos2d-x 3.1 内存管理机制

    Cocos2d-x使用的内存管理方式是引用计数.引用计数是一种非常有效的机制.通过给每个对象维护一个引用计数器,记录该对象当前被引用的次数.当对象添加一次引用时,计数器加1:而对象失去一次引用时.计数 ...

  8. cocos2d-x 3.0 内存管理机制

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  9. cocos2d-x内存管理(见解)

    cocos2d-x 延续了cocos2d 和OC的引用计数的内存管理机制! 下面我们来看看CCDriectro类 CCPoolManager::sharedPoolManager()->push ...

随机推荐

  1. C# 中的事件含义介绍

    AutoSizeChanged 当 AutoSize 属性的值更改时发生.(从 ButtonBase 继承.)   BackColorChanged 当 BackColor 属性的值更改时发生.(从 ...

  2. [实变函数]4.1 可测函数 (measurable function) 及其性质

    1 记号 (notations) (1) 广义实数: $\overline{\bbR}=\bbR\cup\sed{-\infty}\cup\sed{+\infty}$. (2) 本章主要考虑     ...

  3. 转载__直接拿来用!最火的Android开源项目(一)

    http://www.csdn.net/article/2013-05-03/2815127-Android-open-source-projects 已分类汇总到 https://github.co ...

  4. JAVA 数组排序

    一.数组升序排序 实例: import java.util.Arrays; //导入数组处理 public class Test{ public static void main(String[] a ...

  5. Coding.net 代码管理快速入门

    当项目创建好了之后,我们该如何上传代码到 coding 上呢? Coding 网站使用“ Git 仓库”(类似 github )来管理代码. 其操作原理在于:利用 git 服务,将本地的项目目录下的文 ...

  6. C#异步编程 z

    http://www.cnblogs.com/fangyz/p/5134018.html 从.NET4.5开始,用async和await关键字再加上Task.Run是一个非常不错的异步编程模型. 1. ...

  7. SQL 优化原则

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...

  8. db link的查看创建与删除

    1.查看dblink select owner,object_name from dba_objects where object_type='DATABASE LINK'; 或者 select * ...

  9. ASPxGridView中DetailRow的使用

    ASPxGridView是一个方便的数据显示控件,可是自动的绑定我们所需要的数据,但是有时,当数据属性过多时,我们并不一定要把所有的信息提供给所有的人,当有人需要这些数据时可以自动的进行查看,这时就可 ...

  10. Grid++Report的几点总结

    一.同事解决方案: 1.在View文件夹下建立报表文件A,用来作为报表呈现的载体.这个页面负责加载报表模板与加载数据源.其中报表模板由于后缀名为grf,在MVC中不做任何修改的情况下,系统会做路由处理 ...