[发明专利]一种调用成员变量的方法和装置有效
申请号: | 201210468095.0 | 申请日: | 2012-11-19 |
公开(公告)号: | CN103823663B | 公开(公告)日: | 2017-12-01 |
发明(设计)人: | 牛东升 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京三高永信知识产权代理有限责任公司11138 | 代理人: | 罗振安 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 调用 成员 变量 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,特别涉及一种调用成员变量的方法和装置。
背景技术
在计算机系统中,动态链接库包括多个类对象,而类对象包括多个成员变量,当应用程序运行过程中需要使用某个成员变量时,首先需要从该动态链接库中调用该成员变量。
目前,调用成员变量的具体过程为:在应用程序编译时,编译器会将应用程序所使用的成员变量在其所在类对象中的偏移量记载进应用程序。当应用程序运行过程中需要某个成员变量时,终端获取该成员变量所在类对象的首地址,根据该成员变量所在类对象的首地址和编译时记载的偏移量,从动态链接库中调用该成员变量。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
在不同版本的动态链接库中成员变量的偏移量可能不同,而编译时所确定的偏移量只有一份,以及不同终端生产厂商在生成终端时可能会修改动态链接库,使动态链接库中的成员变量的位置发生变化,如此现有技术根据编译时确定的成员变量的位置顺序调用动态链接库包括的成员变量时可能出现调用出错现象。
发明内容
为了避免调用动态链接库包括的成员变量时出现调用出错现象,本发明实施例提供了一种调用成员变量的方法和装置。所述技术方案如下:
一方面,提供了一种调用成员变量的方法,所述方法包括:
对动态链接库包括的成员变量进行分析,获取所述成员变量在其所在类对象中的偏移量;
将所述成员变量的标识和所述成员变量在其所在类对象中的偏移量存储在成员变量的标识和偏移量的对应关系中;
当调用待调用的成员变量时,根据所述成员变量的标识和偏移量的对应关系,从所述动态链接库中调用所述待调用的成员变量。
其中,所述对动态链接库包括的成员变量进行分析,获取所述成员变量在其所在类对象中的偏移量,包括:
为动态链接库包括的成员变量分别设置对应的唯一一个魔数,将所述动态链接库包括的成员变量替换为其对应的魔数;
将所述动态链接库包括的成员变量的标识和所述成员变量对应的魔数存储在成员变量的标识和魔数的对应关系中;
根据所述成员变量的标识和魔数的对应关系,获取所述动态链接库包括的成员变量在其所在类对象中的偏移量。
其中,所述为动态链接库包括的成员变量分别设置对应的唯一一个魔数,将所述动态链接库包括的成员变量替换为其对应的魔数,包括:
从动态链接库包括的第一个成员变量进行扫描;
设置所述扫描的成员变量对应的唯一一个魔数;
在所述动态链接库中将所述成员变量替换为所述成员变量对应的魔数。
进一步地,所述根据所述成员变量的标识和魔数的对应关系,获取所述动态链接库包括的成员变量在其所在类对象中的偏移量,包括:
从所述成员变量的标识和魔数的对应关系中,获取所述动态链接库包括的成员变量对应的魔数;
设置指针指向所述成员变量所在类对象包括的第一个魔数,设置指针移动次数的初值;
比较所述指针指向的魔数与所述成员变量对应的魔数,如果两者相同,则设置所述成员变量的偏移量为所述指针移动次数,如果两者不同,则设置指针指向下一个魔数,增加所述指针移动次数。
其中,所述当调用待调用的成员变量时,根据所述成员变量的标识和偏移量的对应关系,从所述动态链接库中调用所述待调用的成员变量,包括:
当调用待调用的成员变量时,根据所述待调用的成员变量的标识,从所述成员变量的标识和偏移量的对应关系中获取所述待调用的成员变量在其所在类对象中的偏移量;
获取所述待调用的成员变量所在类对象的首地址;
根据所述待调用的成员变量在其所在类对象中的偏移量和所述待调用的成员变量所在类对象的首地址,从所述动态链接库中调用所述待调用的成员变量。
另一方面,提供了一种调用成员变量的装置,所述装置包括:
获取模块,用于对动态链接库包括的成员变量进行分析,获取所述成员变量在其所在类对象中的偏移量;
存储模块,用于将所述成员变量的标识和所述获取模块获取的所述成员变量在其所在类对象中的偏移量存储在成员变量的标识和偏移量的对应关系中;
调用模块,用于当调用待调用的成员变量时,根据所述存储模块存储的所述成员变量的标识和偏移量的对应关系,从所述动态链接库中调用所述待调用的成员变量。
其中,所述获取模块包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210468095.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:中效复合空气过滤袋
- 下一篇:一种带云存储的移动电源