【cocos2d-x 3.x 学习笔记】对象内存管理

本文介绍了cocos2d-x 3.x中的对象内存管理,主要采用引用计数的方式,通过Ref类实现。cocos2d-x提倡使用静态工厂方法create()创建对象,并自动加入自动回收池。一帧结束后,对象的release()方法会被调用来检查引用计数,若为0则释放内存。此外,文章提到了最佳实践,建议避免直接使用retain()和release(),以防止内存泄漏和野指针问题。
摘要由CSDN通过智能技术生成
内存管理

     内存管理一直是一个不易处理的问题,开发者必须考虑分配回收的方式和时机,针对堆和栈做不同的优化处理,等等。内存管理的核心是动态分配的对象必须保证在使用完毕后有效地释放内存,即管理对象的生命周期。由于C++是一个较为底层的语言,其设计上不包含任何智能管理内存的机制。一个对象在使用完毕后必须被回收,然而在复杂的程序中,对象所有权在不同程序片段间传递或共享,使得确定回收的时机十分困难,因此内存管理成为了程序员十分头疼的问题。

另一方面,过于零散的对象分配回收可能导致堆中的内存碎片化,降低内存的使用效率。因此,我们需要一个合适的机制来缓解这个问题。

Boost库引入的智能指针(以及C++11引入的共享指针)从对象所有权传递的角度来解决内存管理问题。但是,在很多情况下,智能指针还是显得单薄而无力,因为实际开发中对象间的关系十分复杂,所有权传递的操作在开发过程中会变得冗杂不堪。于是,各种基于C++的第三方工具库和引擎往往都会实现自己的智能内存管理机制来解决内存管理的难题,试图将开发者从烦琐而晦涩的内存管理中解放出来。

主流的内存管理技术

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

1)引用计数
它是一种很有效的机制,通过给每个对象维护一个引用计数器,记录该对象当前被引用的次数。当对象增加一次引用时,计数器加1;而对象失去一次引用时,计数器减1;当引用计数为0时,标志着该对象的生命周期结束,自动
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值