cocos2dx之内存泄漏解决机制

                            cocos2dx之内存泄漏解决机制

 

      大家好,我是Lampard

      今天与大家探讨一下cocos中发生内存泄漏的解决机制

 

    c++层面的内存泄漏解决

         写项目难免会有内存泄漏情况,对于c++层面的代码来说我们可以使用vld这个ku来进行内存泄漏的判断。具体操作如下:

1.首先下载安装 vld,下载后双击安装

2.在项目c++目录加载链接vld库    

3.找到程序入口main.cpp,添加引用头   #include <vld.h>

4.启动调试——>执行到我检测内存泄漏的页面——>停止调试

        最后定位到造成内存泄漏的代码行,根据游戏逻辑解决即可。

        reference:VS内存泄漏检测之 vld ( cocos2d-x 检测内存泄漏)

 

  Lua层面的内存泄漏解决

       代码逻辑一般是写在脚本语言中,现在就看看怎么解决lua层面的内存泄漏。

   对代码逻辑不熟悉的情况

       使用云风大大的snapshot 的库,只提供一个函数,用 C 直接调用 lua API 来遍历 lua State​​​​​​​它可以对当前的 Lua_State 做一个完整的快照。我们可以在不同时间,对 Lua State 拍两个快照,相比较后,就很容易知道新增加的内存处于何处了。

       reference:使用snapshot定位内存泄漏

   对代码逻辑比较熟悉的情况

      通常产生泄漏的都是一些被反复创建的类型若对代码逻辑比较熟悉,可以定义一个全局的弱表(使其key为弱引用,然后在每次创建那些可能存在泄漏的对象的时候,都放入这个table,让其作为key,value通常我会用当前时间。)由于弱引用的性质,如果其他引用都消失了,那么在弱引用table中对这个对象的引用也会消失(变成nil),反之,只要还有其它任何一个引用存在,这个弱引用表中对这个对象的引用就继续存在。依赖这个特性,当程序已经跑过释放对象的逻辑后,如果这个表中还存在有这个对象的引用,那么这个对象肯定就是泄漏了。
 

 至此我们的内存泄漏的解决机制已经完成,谢谢大家!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lampard杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值