一种内存管理方法

文档序号:7939796阅读:197来源:国知局
专利名称:一种内存管理方法
技术领域
本发明涉及一种通讯设备的内存管理方法,特别是涉及一种对通讯和效率要求比较高的场合,如点对点通信等场合。
背景技术
随着互联网的迅速发展,越来越多的数据通讯产品投入使用。信息在传输过程中需要被不断地增加头部信息以便识别来自不同层次的消息,在通讯过程中传统的增加头部信息采用的方法需要不断申请内存、拷贝信息。这样多次拷贝容易造成通讯速度减慢、效率降低;而多次申请内存如果得不到及时释放容易造成内存泄漏、消息丢失。

发明内容
本发明提出了一种内存管理方法,可以使消息在传输过程中不需要多次申请内存,拷贝信息,从而避免因此造成的内存流失和传输效率低下的问题。
本发明所述的内存管理方法,包括以下实现步骤
1)预先申请一块内存作为内存池,划分内存块并进行初始化,申请的内存块从内存池头部取,释放的内存块存放在内存池尾部;2)在所述内存块中设置一个空闲区,用于添加头部信息使用,消息区设置在所述内存块的空闲区后;3)当需要增加头部信息时,在所述空闲区将指针前移需要增加的头部信息长度,然后添加头部信息;4)读取头部信息时,将指针移动到空闲区的相应位置读取需要的信息。
为了准确释放内存块,在步骤1)中设置内存池的起始地址为256的倍数,当释放内存块时,将需要释放的内存地址和0xFFFFFF00按位与的结果作为该内存块的起始地址,释放该内存块。
本发明与现有技术相比,它使用的内存量和拷贝次数少,提高了通讯效率,减少了内存流失和泄漏,同时由于它简单精练,对设备要求不高,通用性强,有效地降低了成本,减少了研发和维护费用,并且具有更高的处理效率,非常适合通讯和效率要求非常高的场合。


图1本发明所述的内存块结构示意图;图2本发明的内存块初始化流程图;图3本发明的内存块申请流程图;
图4本发明的内存块释放流程图。
具体实施例方式
以下结合附图并通过具体实施例说明本发明所述的内存管理方法先介绍本发明的内存块结构,内存块的大小可以在具体使用中根据实际情况设置,如图1所示以每块内存占1536字节为例,每个内存块由内存块信息、空闲区和消息区组成,空闲区64字节用于存放头部信息,消息区1456字节用于存放消息。
本发明所述方法的处理步骤分别如下1.如图2所示,内存块初始化处理步骤为第一步申请内存组成内存池,调整内存池起始地址为256的倍数。
第二步填写内存池相关信息,如内存池头尾地址,总的内存块数,空闲内存块数等。
第三步将内存池划分为若干内存块,其中每块内存大小为1536字节,填写内存块信息,并将内存池中所有内存块用链表链接。
2.如图3所示,内存块的申请处理步骤第一步判断要申请的内存大小是否大于内存块最大长度。如果大于内存块最大长度,则采用其它方式申请内存,否则将采用该内存块方式申请。
第二步判断内存池是否有空闲内存块,如果有,则从内存池头部取出一块内存,返回信息区指针,否则返回空。
3.如图4所示,内存块释放处理步骤第一步将要释放的内存地址与0xFFFFFF00按位与,得到内存块的起始地址。
第二步判断该内存块的起始地址是否在内存块池的地址范围内。如果不是,表明该内存不是用内存块方法申请的内存,采用其它方式释放,否则跳转下一步。
第三步判断该内存的标识位是否正确,如果不正确,表明该内存块出错,否则跳转下一步。
第四步内存块的计数器减1,如果该内存块的计数器为0,表明该内存要释放,否则返回。
第五步将内存块链接到内存池的尾部,同时内存池的空闲数加1。
通过以上的说明,可以看出采用本发明的内存块管理方法和传统的内存管理方法相比处理效率更高,传输速度更快,而且不易造成内存流失,代码量极少,对设备没有提出额外的要求,易于开发和维护。
权利要求
1.一种内存管理方法,其特征在于,包括以下实现步骤1)预先申请一块内存作为内存池,划分内存块并进行初始化,申请的内存块从内存池头部取,释放的内存块存放在内存池尾部;2)在所述内存块中设置一个空闲区,用于添加头部信息使用,消息区设置在所述内存块的空闲区后;3)当需要增加头部信息时,在所述空闲区将指针前移需要增加的头部信息长度,然后添加头部信息;4)读取头部信息时,将指针移动到空闲区的相应位置读取需要的信息。
2.根据权利要求1所述的内存管理方法,其特征在于,为了准确释放内存块,在所述步骤1)中设置内存池的起始地址为256的倍数,释放内存块时,将需要释放的内存地址和0xFFFFFF00按位与的结果作为该内存块的起始地址,释放该内存块。
3.根据权利要求1或2所述的内存管理方法,其特征在于,所述步骤1)中划分内存块并进行初始化包括以下处理步骤第一步申请内存组成内存池,调整内存池起始地址为256的倍数。第二步填写内存池信息;第三步将内存池划分为若干内存块,填写内存块信息,并将内存池中所有内存块用链表链接。
4.根据权利要求1或2所述的内存管理方法,其特征在于,所述步骤1)中释放内存块包括以下处理步骤第一步将要释放的内存地址与0xFFFFFF00按位与,得到内存块的起始地址;第二步判断该内存块的起始地址是否在内存块池的地址范围内。如果不是,表明该内存不是用内存块方法申请的内存,采用其它方式释放,否则跳转下一步;第三步判断该内存的标识位是否正确,如果不正确,表明该内存块出错;否则跳转下一步;第四步内存块的计数器减1,如果该内存块的计数器为0,表明该内存要释放,否则返回;第五步将内存块链接到内存池的尾部,同时内存池的空闲数加1。
5.根据权利要求1所述的内存管理方法,其特征在于,所述内存块中每块内存占1536字节,由内存块信息、空闲区和消息区组成,空闲区占64字节,消息区占1456字节。
全文摘要
本发明涉及一种通讯设备的内存管理方法,包括以下实现步骤预先申请一块内存作为内存池,划分内存块并进行初始化,申请的内存块从内存池头部取,释放的内存块存放在内存池尾部;在所述内存块中设置一个空闲区,用于添加头部信息使用,消息区设置在所述内存块的空闲区后;当需要增加头部信息时,在所述空闲区将指针前移需要增加的头部信息长度,然后添加头部信息;读取头部信息时,将指针移动到空闲区的相应位置读取需要的信息。采用本发明的方法可以减少拷贝次数,提高通讯效率,减少内存流失和泄漏,对设备要求不高,通用性强,有效地降低了成本,适合通讯和效率要求非常高的场合。
文档编号H04L12/28GK1505330SQ02151120
公开日2004年6月16日 申请日期2002年12月2日 优先权日2002年12月2日
发明者冯敏, 冯 敏 申请人:深圳市中兴通讯股份有限公司上海第二研究所, 深圳市中兴通讯股份有限公司上海第二
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1