[发明专利]程序设计语言中管理指针的方法及系统有效
申请号: | 201110106884.5 | 申请日: | 2011-04-27 |
公开(公告)号: | CN102156631A | 公开(公告)日: | 2011-08-17 |
发明(设计)人: | 甘志文 | 申请(专利权)人: | TCL集团股份有限公司 |
主分类号: | G06F9/32 | 分类号: | G06F9/32 |
代理公司: | 深圳市君胜知识产权代理事务所 44268 | 代理人: | 杨宏;王永文 |
地址: | 516001 广东省惠州市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序设计语言 管理 指针 方法 系统 | ||
技术领域
本发明涉及对计算机指针的管理,特别涉及一种程序设计语言中管理指针的方法及系统。
背景技术
电脑程序设计语言一般使用C/C++语言或者汇编语言,这些程序语言均使用指针这种数据类型。指针是指向一块内存的地址,它类似于房屋的门牌号,门牌号是找到房屋是唯一的办法,房屋被拆除后,通过门牌号将找不到对应的房屋,此时的门牌号就是野门牌号。相应的,此时的指针称之为野指针。
如果野指针在程序运行时使用,将直接导致造成程序退出,程序的退出是当操作系统检测到不合法的内存操作后做出的反应,因为程序运行于操作系统之上,内存是操作系统最重要的资源之一。而所有的程序均运行于内存中,如果内存被滥改,会严重影响应用程序和系统的正常运行。可见程序只能操作属于自己开辟的内存,这是它必须遵守的规则。
目前,操作系统的内存策略是直接杀掉访问野指针的程序,在使用C/C++语言开发程序的过程中,程序员凭借严谨逻辑思维和详细的测试仍然不能保证程序中没有野指针。
发明内容
鉴于上述现有技术的不足之处,本发明的目的在于提供一种程序设计语言中管理指针的方法及系统,能对指针进行查询,当查询到野指针时,可将野指针对应的内存和指针缓冲链表中相应的节点删除。
为了达到上述目的,本发明采取了以下技术方案:
一种程序设计语言中管理指针的方法,其中,包括:
A、获取指针的值;
B、判断指针缓冲链表中是否存在该指针的地址位;如果是,执行步骤C;否则,执行步骤D;
C、判断所述地址位对应的标识位与所述指针指向的内存的第一个整数区是否具有相同的值;如果是,执行步骤E;否则,执行步骤D;
D、返回假,判定该指针为野指针;
E、返回真。
所述的程序设计语言中管理指针的方法,其中,在步骤A之前,所述的方法还包括:建立并维护指针缓冲链表。
所述的程序设计语言中管理指针的方法,其中,指针缓冲链表包括节点,所述节点包括标识位和地址位;其中,该指针缓冲链表的初始值为空。
所述的程序设计语言中管理指针的方法,其中,所述的方法还包括:当系统成功申请一块内存时,在该内存的第一个整数区写入全局计数器的值,并维护指针缓冲链表中的数据。
所述的程序设计语言中管理指针的方法,其中,当系统成功申请一块内存时,在该内存的第一个整数区写入全局计数器的值,并维护指针缓冲链表中的数据的步骤具体包括:
系统调用动态内存分配函数申请内存;
当成功申请一块内存时,返回指向该内存的指针,同时将全局计数器的值自动加1;
在该内存第一个整数区写入全局计数器此时的值;
将该全局计数器的值和指针一起组成一个节点,并将该节点新增到指针缓冲链表中。
所述的程序设计语言中管理指针的方法,其中,在步骤D之后,所述的方法还包括:释放野指针的内存,并更新指针缓冲链表。
所述的程序设计语言中管理指针的方法,其中,释放野指针的内存,并更新指针缓冲链表的步骤具体包括:
调用动态内存释放函数,并释放野指针指向的内存块;
在指针缓冲链表中查找包含该野指针的节点;
删除该节点。
一种程序设计语言中管理指针的系统,其中,包括:指针获取单元,用于获取指针的值;指针识别单元,用于判断指针缓冲链表中是否存在该指针的地址位;指针查询单元,用于判断所述地址位对应的标识位与所述指针指向的内存的第一个整数区是否具有相同的值;真假返回单元,用于在所述地址位对应的标识位与所述指针指向的内存的第一个整数区的值相同时返回真;在指针缓冲链表中不存在所述指针的地址位,或者在指针缓冲链表中存在所述指针的地址位,但所述地址位对应的标识位与所述指针指向的内存的第一个整数区的值不同时返回假。
所述的程序设计语言中管理指针的系统,其中,还包括内存分配单元,用于在系统成功申请一块内存时,在内存第一整数区写入全局计数器的值,并维护指针缓冲链表中的数据。
所述的程序设计语言中管理指针的系统,其中,还包括内存销毁单元,用于释放野指针的内存,并更新指针缓冲链表。
本发明提供的一种程序设计语言中管理指针的方法及系统,在指针缓冲链表中存在指针的地址位时,判断该地址位对应的标识位与该地址指向的内存的第一个整数区的数值具有相同的值,当这两个值不同时判定为野指针,释放这个野指针对应的内存、并删除该指针对应的节点,从而杜绝了野指针的错误访问,还能把所有不用的内存释放出来。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于TCL集团股份有限公司,未经TCL集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110106884.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种燃气灶用吸余热水壶
- 下一篇:一种LED节能灯的散热装置