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

一,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. 禁止使用finalize方法

    Don´t use Finalizers, mainly because are unpredictable and we don´t know when will be executed, &quo ...

  2. DBA_在Linux上安装Oracle Database11g数据库(案例)

    2014-08-08 Created By BaoXinjian

  3. 关于Rotation和Quaternion的一些问题

    当我们使用unity的时候,面对一个物体,一个不可避免的问题就是:控制物体的旋转. unity的Transform组件的第二个属性Rotation为我们提供控制物体旋转的功能.在一个物体的Inspec ...

  4. myBatis获取批量插入数据的主键id

    在myBatis中获取刚刚插入的数据的主键id是比较容易的 , 一般来说下面的一句话就可以搞定了 , 网上也有很多相关资料去查. @Options(useGeneratedKeys = true, k ...

  5. ylbtech-Unitity-CS:Indexers

    ylbtech-Unitity-CS:Indexers 1.A,效果图返回顶部   1.B,源代码返回顶部 1.B.1, // indexer.cs // 参数:indexer.txt using S ...

  6. 四步轻松实现用Visio画UML类图

    本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对Visio画UML类图的步骤一定会有所了解. 用Visio画UML类图 对于画类图的工 ...

  7. 使用gson-1.6.jar解析json

    package com.example.mars_2900_json01; import java.io.StringReader; import java.lang.reflect.Type; im ...

  8. 【收藏用】--切勿转载JAVA 使用Dom4j 解析XML

    原帖地址 : http://blog.csdn.NET/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1) ...

  9. inno setup 执行SQL

    参考之:1.可将导入数据的功能写入一个小程序,再外部调用(楼上已经说了):2.可用程序代码:[Setup] AppName=科發醫院管理系統 AppVerName=科發醫院管理系統4.0 AppPub ...

  10. ArcGIS Engine 下投影坐标和经纬度坐标的相互转换

    ArcGIS Engine 下投影坐标和经纬度坐标的相互转换 投影转经纬度 ); pPoint.Project(pSRF.CreateGeographicCoordinateSystem((int)e ...