一种避免内存地址冲突的方法及装置制造方法及图纸

技术编号:14530444 阅读:74 留言:0更新日期:2017-02-02 13:06
本发明专利技术公开了一种避免内存地址冲突的方法及装置。所述避免内存地址冲突的方法,包括:当主程序调用普通函数时,判断所述普通函数对所述主程序中变量的地址的变更操作;判断所述变更操作之后的所述变量的地址是否与主程序中的其他变量的地址冲突;当所述变更操作之后的所述变量的地址与主程序中的其他变量的地址冲突时,系统指定出新的空闲的内存空间;将所述变量的地址修改为所述新的空闲的内存空间中的地址。本发明专利技术可避免对变量的内存地址的进行非法操作和非法赋值,从而避免非空闲内存地址中的数据被误改的情况发生。

【技术实现步骤摘要】

本专利技术涉及内存管理
,特别涉及一种避免内存地址冲突的方法及装置。
技术介绍
众所周知,操作系统对数据的操作是事需要通过内存地址找到相应位置的内存中的数据,再对该内存中的数据进行操作的。指针变量往往被应用于指向某一变量的地址。如果对指针变量中内存数值a进行修改,其结果很可能也会指向一个真实存在的内存地址b,若该真实存在的内存地址b为非空闲内存空间的内存地址,则对该内存地址b中所保存的数据k进行修改,不放假设该内存地址b中所保存的数据被修改为k。当操作系统调用内存地址b中的数值的时候,很可能发生无法预测的后果。如何妥善的解决上述问题,就成了业界亟待解决的课题。
技术实现思路
本专利技术提供一种避免内存地址冲突的方法及装置,用以避免对变量的内存地址的进行非法操作和非法赋值,从而避免非空闲内存地址中的数据被误改的情况发生。根据本专利技术实施例的第一方面,提供一种避免内存地址冲突的方法,包括:当主程序调用普通函数时,判断所述普通函数对所述主程序中变量的地址的变更操作;判断所述变更操作之后的所述变量的地址是否与主程序中的其他变量的地址冲突;当所述变更操作之后的所述变量的地址与主程序中的其他变量的地址冲突时,系统指定出新的空闲的内存空间;将所述变量的地址修改为所述新的空闲的内存空间中的地址。在一个实施例中,所述当主程序调用普通函数时,判断所述普通函数对所述主程序中变量的地址的变更操作,包括:当所述主程序调用普通函数时,判断所述普通函数是否对所述主程序中的变量的进行了参数引用;当所述普通函数对所述主程序中的变量的存在参数引用时,判断所述普通函数是否对所述主程序中的所述变量的地址进行了调用;当所述普通函数对所述主程序中的所述变量的地址进行了调用时,判断所述普通函数是否对所述主程序中的所述变量的地址进行了变更操作。在一个实施例中,所述判断所述变更操作之后的所述变量的地址是否与主程序中的其他变量的地址冲突,包括:获取主程序中所有变量所占据的内存空间;分析出所述主程序中所有变量所占据的内存空间的地址区间;判断所述变更操作之后的所述变量的地址是否在所述地址区间之内。在一个实施例中,所述当所述变更操作之后的所述变量的地址与主程序中的其他变量的地址冲突时,系统指定出新的空闲的内存空间,包括:当所述变更操作之后的所述变量的地址与主程序中的其他变量的地址冲突时,获取所述变量占据的内存空间的数值;系统遍历当下内存空间中处于空闲状态的所有的连续内存空间;选择内存空间的数值大于所述变量占据的内存空间的数值的所述连续内存空间;确定所述连续内存空间为所述系统指定出新的空闲的内存空间。在一个实施例中,所述将所述变量的地址修改为所述新的空闲的内存空间中的地址,包括:获取所述新的空闲的内存空间中的地址区间的起始地址和终止地址;将所述终止地址的数值减去所述变量占据的内存空间的数值,将上述减法运算的结果加上自然数1,确认所述加法运算的结果为极限地址;确认所述起始地址与所述极限地址之间的地址区间为合理区间;当所述变量的地址在所述合理区间之内时,确认所述变量的地址为所述新的空闲的内存空间中的地址。根据本专利技术实施例的第二方面,提供一种避免内存地址冲突的装置,包括:第一判断模块,用于当主程序调用普通函数时,判断所述普通函数对所述主程序中变量的地址的变更操作;第二判断模块,用于判断所述变更操作之后的所述变量的地址是否与主程序中的其他变量的地址冲突;指定模块,用于当所述变更操作之后的所述变量的地址与主程序中的其他变量的地址冲突时,系统指定出新的空闲的内存空间;修改模块,用于将所述变量的地址修改为所述新的空闲的内存空间中的地址。在一个实施例中,所述第一判断模块,包括:第一判断子模块,用于当所述主程序调用普通函数时,判断所述普通函数是否对所述主程序中的变量的进行了参数引用;第二判断子模块,用于当所述普通函数对所述主程序中的变量的存在参数引用时,判断所述普通函数是否对所述主程序中的所述变量的地址进行了调用;第三判断子模块,用于当所述普通函数对所述主程序中的所述变量的地址进行了调用时,判断所述普通函数是否对所述主程序中的所述变量的地址进行了变更操作。在一个实施例中,所述第二判断模块,包括:第一获取子模块,用于获取主程序中所有变量所占据的内存空间;分析子模块,用于分析出所述主程序中所有变量所占据的内存空间的地址区间;第四判断子模块,用于判断所述变更操作之后的所述变量的地址是否在所述地址区间之内。在一个实施例中,所述指定模块,包括第二获取子模块,用于当所述变更操作之后的所述变量的地址与主程序中的其他变量的地址冲突时,获取所述变量占据的内存空间的数值;遍历子模块,用于系统遍历当下内存空间中处于空闲状态的所有的连续内存空间;选择子模块,用于选择内存空间的数值大于所述变量占据的内存空间的数值的所述连续内存空间;第一确定子模块,用于确定所述连续内存空间为所述系统指定出新的空闲的内存空间。在一个实施例中,所述修改模块,包括:第三获取子模块,用于获取所述新的空闲的内存空间中的地址区间的起始地址和终止地址;计算子模块,用于将所述终止地址的数值减去所述变量占据的内存空间的数值,将上述减法运算的结果加上自然数1,确认所述加法运算的结果为极限地址;第二确认子模块,用于确认所述起始地址与所述极限地址之间的地址区间为合理区间;第三确认子模块,用于当所述变量的地址在所述合理区间之内时,确认所述变量的地址为所述新的空闲的内存空间中的地址。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术的限制。在附图中:图1为本专利技术一示例性实施例示出的一种避免内存地址冲突的方法的流程图;图2为本专利技术一示例性实施例示出的一种避免内存地址冲突的方法的步骤S11的流程图;图3为本专利技术一示例性实施例示出的一种避免内存地址冲突的方法的步骤S12的流程图;图4为本专利技术一示例性实施例示出的一种避免内存地址冲突的方法的步骤S13的流程图;图5为本专利技术一示例性实施例示出的一种避免内存地址冲突的方法的步骤S14的流程图;图6为本专利技术一示例性实施例示出的一种避免内存地址冲突的装置的框图;图7为本专利技术一示例性实施例示出的一种避免内存地址冲突的装置的第一判断模块61的框图;图8为本专利技术一示例性实施例示出的一种避免内存地址冲突的装置的第二判断模块62的框图;图9为本专利技术一示例性实施例示出的一种避免内存地址冲突的装置的指定模块63的框图;图10为本专利技术另一示例性实施例示出的一种避免内存地址冲突的装置的修改模块64的框图。具体实施方式以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。图1是根据一示例性实施例示出的一种避免内存地址冲突的方法流程图,如图1所示,该避免内存地址冲突的方法,包括以下步骤S11-S14:在步骤S11中,当主程序调用普通函数时,本文档来自技高网...

【技术保护点】
一种避免内存地址冲突的方法,其特征在于,包括:当主程序调用普通函数时,判断所述普通函数对所述主程序中变量的地址的变更操作;判断所述变更操作之后的所述变量的地址是否与主程序中的其他变量的地址冲突;当所述变更操作之后的所述变量的地址与主程序中的其他变量的地址冲突时,系统指定出新的空闲的内存空间;将所述变量的地址修改为所述新的空闲的内存空间中的地址。

【技术特征摘要】
1.一种避免内存地址冲突的方法,其特征在于,包括:当主程序调用普通函数时,判断所述普通函数对所述主程序中变量的地址的变更操作;判断所述变更操作之后的所述变量的地址是否与主程序中的其他变量的地址冲突;当所述变更操作之后的所述变量的地址与主程序中的其他变量的地址冲突时,系统指定出新的空闲的内存空间;将所述变量的地址修改为所述新的空闲的内存空间中的地址。2.如权利要求1所述的方法,其特征在于,所述当主程序调用普通函数时,判断所述普通函数对所述主程序中变量的地址的变更操作,包括:当所述主程序调用普通函数时,判断所述普通函数是否对所述主程序中的变量的进行了参数引用;当所述普通函数对所述主程序中的变量的存在参数引用时,判断所述普通函数是否对所述主程序中的所述变量的地址进行了调用;当所述普通函数对所述主程序中的所述变量的地址进行了调用时,判断所述普通函数是否对所述主程序中的所述变量的地址进行了变更操作。当所述普通函数对所述主程序中的所述变量的地址进行了调用时,判断。3.如权利要求2所述的方法,其特征在于,所述判断所述变更操作之后的所述变量的地址是否与主程序中的其他变量的地址冲突,包括:获取主程序中所有变量所占据的内存空间;分析出所述主程序中所有变量所占据的内存空间的地址区间;判断所述变更操作之后的所述变量的地址是否在所述地址区间之内。4.如权利要求1所述的方法,其特征在于,所述当所述变更操作之后的所述变量的地址与主程序中的其他变量的地址冲突时,系统指定出新的空闲的内存空间,包括:当所述变更操作之后的所述变量的地址与主程序中的其他变量的地址冲突时,获取所述变量占据的内存空间的数值;系统遍历当下内存空间中处于空闲状态的所有的连续内存空间;选择内存空间的数值大于所述变量占据的内存空间的数值的所述连续内存空间;确定所述连续内存空间为所述系统指定出新的空闲的内存空间。5.如权利要求1所述的方法,其特征在于,所述将所述变量的地址修改为所述新的空闲的内存空间中的地址,包括:获取所述新的空闲的内存空间中的地址区间的起始地址和终止地址;将所述终止地址的数值减去所述变量占据的内存空间的数值,将上述减法运算的结果加上自然数1,确认所述加法运算的结果为极限地址;确认所述起始地址与所述极限地址之间的地址区间为合理区间;当所述变量的地址在所述合理区间之内时,确认所述变量的地址为所述新的空闲的内存空间中的地址。6...

【专利技术属性】
技术研发人员:张新亮
申请(专利权)人:天脉聚源北京传媒科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1