cocos2d 释放资源 总结

本文介绍了Cocos2d中的资源管理策略,包括如何通过removeFromParent()释放场景类,手动使用cc_safe_delete释放retain的类,以及如何正确地清理std::vector所占用的内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cocos2d的自动回收机制用起来还是挺好用的,但是有的时候我们还是要写单一的函数来实现场景的释放,经过retain后的类的释放,std::vector的释放。

  • 如果只是单一的一个场景类或者Layer类,在使用完毕后可以直接调用removefromParent()进行释放,这时候场景类相当于被addchidren()的“父亲”遗弃的婴儿,在cocos2d的自动回收机制中调用自己的析构函数进行释放,首先释放自己,在释放自己的成员类,然后释放自己的基类(根据析构函数的执行顺序,是构造函数执行的反顺序。)
  • 程序当中如果有经过retain()的类,一定要手动cc_safe_delete进行释放,retain的类系统是不会自动回收的。
  • 程序中当然少不了std::vector,vector存储变量是连续空间的,所以在定义的时候就会自动申请一段空间来存放数据,当空间全部耗尽,会继续申请空间来存放数据。所以,在释放vector的时候出了clear清除数据别忘了清除申请的空间,所以你要使用shrik_to_fit()来清除多余的空间。当然也可以使用vector().swap(myvector);
    来释放空间。
    swap交换技巧实现内存释放思想:vector()使用vector的默认构造函数建立临时vector对象,再在该临时对象上调用swap成员,swap调用之后对象myvector占用的空间就等于一个默认构造的对象的大小,临时对象就具有原来对象v的大小,而该临时对象随即就会被析构,从而其占用的空间也被释放。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值