[发明专利]对象的析构方法、介质、装置和计算设备有效
申请号: | 201710966413.9 | 申请日: | 2017-10-17 |
公开(公告)号: | CN107741891B | 公开(公告)日: | 2020-12-08 |
发明(设计)人: | 陶泽宇 | 申请(专利权)人: | 网易(杭州)网络有限公司 |
主分类号: | G06F11/14 | 分类号: | G06F11/14;G06F11/34;G06F9/448 |
代理公司: | 北京律智知识产权代理有限公司 11438 | 代理人: | 王卫忠;刘文洁 |
地址: | 310052 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 对象 方法 介质 装置 计算 设备 | ||
1.一种对象的析构方法,包括:
在目标对象的生命周期结束时,对所述目标对象进行延时析构;
在对所述目标对象进行延时析构的时间段内,将原本发送给所述目标对象的方法转发至一空函数指针;
判断程序是否切换至后台运行和判断延时析构的目标对象的数量是否达到预定数量;
在判定所述程序切换至后台运行和判定延时析构的目标对象的数量达到所述预定数量时,调用延时析构的目标对象原有的释放内存的函数对所述目标对象进行析构;
其中,将原本发送给所述目标对象的方法转发至一空函数指针的步骤,包括:
将所述目标对象的函数指针所指向的类修改为指定类,并将所述目标对象的原始类的类名保存至所述目标对象中;其中,所述函数指针原本指向所述目标对象的原始类;
基于所述指定类拦截原本发送给所述目标对象的方法,并转发至所述空函数指针。
2.根据权利要求1所述的方法,还包括:
判断程序中的各个对象是否需要进行野指针防护;
若判定所述程序中的任一对象需要进行野指针防护,则对所述任一对象添加标识,并将添加了所述标识的对象作为所述目标对象。
3.根据权利要求2所述的方法,其中,根据所述各个对象的类型,判断所述各个对象是否需要进行野指针防护。
4.根据权利要求2所述的方法,其中,判断程序中的各个对象是否需要进行野指针防护的步骤,包括:
通过定义的新的方法替换用于创建所述各个对象的方法;
在所述新的方法中判断所述各个对象是否需要进行野指针防护。
5.根据权利要求2所述的方法,其中,对所述任一对象添加标识的步骤,包括:
基于动态添加关联对象的函数对所述任一对象添加所述标识。
6.根据权利要求1所述的方法,还包括:
在确定对所述目标对象进行延时析构时,释放所述目标对象引用的相关属性。
7.根据权利要求1所述的方法,其中,基于所述指定类拦截原本发送给所述目标对象的方法,并转发至所述空函数指针的步骤,包括:
通过所述指定类中的消息转发函数拦截原本发送给所述目标对象的方法,并返回一对象类;
向所述对象类动态添加类方法,并将所述类方法的指针指向空函数。
8.根据权利要求1所述的方法,还包括:
获取保存在所述目标对象中的原始类的类名;
根据获取到的类名,统计程序在运行过程中出现的错误数据。
9.一种介质,其上存储有程序,该程序被处理器执行时实现如权利要求1至8中任一项所述的方法。
10.一种对象的析构装置,包括:
析构单元,用于在目标对象的生命周期结束时,对所述目标对象进行延时析构;
处理单元,用于在对所述目标对象进行延时析构的时间段内,将原本发送给所述目标对象的方法转发至一空函数指针;
第二判断单元,用于判断程序是否切换至后台运行和判断延时析构的目标对象的数量是否达到预定数量;
在判定所述程序切换至后台运行和判定延时析构的目标对象的数量达到所述预定数量时,调用延时析构的目标对象原有的释放内存的函数对所述目标对象进行析构;
其中,处理单元包括:
修改单元,用于将所述目标对象的函数指针所指向的类修改为指定类,并将所述目标对象的原始类的类名保存至所述目标对象中;其中,所述函数指针原本指向所述目标对象的原始类;
拦截单元,用于基于所述指定类拦截原本发送给所述目标对象的方法,并转发至所述空函数指针。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网易(杭州)网络有限公司,未经网易(杭州)网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710966413.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种备份管理方法及装置
- 下一篇:一种应用进程的监控方法和装置