一种内存管理的方法和系统技术方案

技术编号:8862261 阅读:160 留言:0更新日期:2013-06-28 01:29
本发明专利技术公开一种内存管理的方法和系统,所述方法包括:步骤1,依据预设的自定义链表中结点数量,分配用于存储所述自定义链表的内存块;步骤2,自定义链表的每个结点中存储的内容为用于存储任意类型数据的内存块的首地址,所述首地址对应的内存块中存储的数据为所述结点对应的任意类型数据;所述内存块为地址连续的一块内存。本发明专利技术能够解决使用大量指针进行结点连接,增加应用的复杂度,使应用开发的效率低下的问题。

【技术实现步骤摘要】
一种内存管理的方法和系统
本专利技术涉及计算机领域,特别涉及一种内存管理的方法和系统。
技术介绍
内存管理是计算机应用中的重要问题。现有技术中采用链表的方式进行内存管理。链表由一系列结点(列表中每一个元素称为一个结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一部分是存储数据元素的数据域,另一部分是存储下一个结点地址的指针域,如图1所示。链表的操作包括插入结点、访问结点数据,删除结点、修改结点数据、查找数据等等。在现有技术中,使用大量指针进行结点连接,增加应用的复杂度,使应用开发的效率低下;此外,访问结点中数据时,需要遍历链表中该结点之前的所有结点,才能够访问到该结点,影响数据访问的速度和便利程度。
技术实现思路
本专利技术提供的内存管理的方法和系统,以解决使用大量指针进行结点连接,增加应用的复杂度,使应用开发的效率低下的问题。本专利技术公开了一种内存管理的方法,所述方法包括:步骤1,依据预设的自定义链表中结点数量,分配用于存储所述自定义链表的内存块;步骤2,自定义链表的每个结点中存储的内容为用于存储任意类型数据的内存块的首地址,所述首地址对应的内存块中存储的数据为所述结点对应的任意类型数据;所述内存块为地址连续的一块内存。其中,所述方法还包括:步骤21,分配用于存储自定义链表信息的内存,所述自定义链表信息包括用于存储自定义链表的内存块的首地址和自定义链表中结点数量。其中,自定义链表中结点所占字节数相同,所述步骤2后还包括:步骤31,在访问自定义链表中指定位置的结点对应数据时,以自定义链表的首地址为起点,依据每个结点所占字节数和所述指定位置确定指定位置的结点的地址;步骤32,按所述地址读取所述指定位置的结点中存储的内存块的首地址;步骤33,依据所述首地址访问内存块中存储的数据。其中,自定义链表各个结点对应的数据的类型相同;所述步骤2后还包括:步骤41,在插入数据时,比较待插入数据同自定义链表中结点对应数据的大小,按从小到大的顺序确定待插入数据对应结点在自定义链表中位置;步骤42,如果所述位置的结点不为空,则对于所述位置和所述位置之后的每个不为空的结点,将结点存储的数据后移到下一个结点中存储;步骤43,将存储待插入数据的内存块的首地址存入所述位置的结点。其中,所述步骤2后还包括:步骤51,在查找数据时,按二分法将自定义链表结点对应的数据同待查找的数据比较;步骤52,返回查找结果。其中,所述步骤2后还包括:步骤61,当在自定义链表的指定位置添加新结点数据时,如果指定位置结点不为空,则对于指定位置和指定位置之后的每个不为空的结点,将结点中存储的数据后移到下一个结点中存储;步骤62,将待添加的新结点数据存入所述位置的结点内;所述新结点数据为存储任意类型数据的内存块的首地址。其中,所述步骤2后还包括:步骤71,当删除自定义链表的指定位置结点的数据时,将指定位置结点中存储的数据删除,对于指定位置之后的每个不为空的结点,将结点中存储的数据前移到前一个结点中存储。其中,所述步骤2后还包括:步骤81,当为自定义链表重新分配内存时,依据预设规则增加自定义链表中结点的数量,分配用于存储结点数量增加后的自定义链表的新内存块;步骤82,将原自定义链表中结点存储的数据移入新内存块;步骤83,释放用于存储原自定义链表的内存块。其中,所述步骤2后还包括:步骤91,将所述自定义链表中所有结点存储的数据删除;或者,所述步骤2后还包括:步骤92,判断自定义链表是否为空;或者,所述步骤2后还包括:步骤93,释放用于存储自定义链表中结点对应数据的内存块和用于存储自定义链表的内存块。本专利技术还公开了一种内存管理的系统,所述系统包括:链表内存分配模块,用于依据预设的自定义链表中结点数量,分配用于存储所述自定义链表的内存块;链表数据存储模块,用于在自定义链表的每个结点中存储用于存储任意类型数据的内存块的首地址,所述首地址对应的内存块中存储的数据为所述结点对应的任意类型数据;所述内存块为地址连续的一块内存。本专利技术实施例的有益效果是:通过使用连续地址的内存块存储结点,在结点中存储用于存储数据的内存块的首地址,能够避免应用中指针的大量使用,提高开发效率;进一步的,在数据访问时,依据访问的结点在链表中的位置,便可直接访问该结点对应的数据,增加访问速度和便利程度;另外,通过按结点对应数据从小到大的顺序插入数据,在查找时使用二分法,加快查找速度。附图说明图1为现有技术中使用链表进行内存管理的技术方案中链表的示意图;图2为本专利技术的内存管理的方法的流程图;图3为本专利技术实施例中分配内存的方法示意图;图4为本专利技术的内存管理的系统的结构图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。参见图2,为本专利技术提供的内存管理的方法的流程图。步骤S100,依据预设的自定义链表中结点数量,分配用于存储自定义链表的内存块。步骤S200,自定义链表的每个结点中存储的数据为用于存储任意类型数据的内存块的首地址,该内存块存储的数据为该结点对应的数据。所述内存块为地址连续的一块内存。需要说明的是,步骤S100中,分配的用于存储自定义链表的内存块,包括地址连续的多个子内存块,子内存块大小为结点占用的字节数。每个结点占用设置的字节数,例如每个结点占用4字节,该内存块中每4个字节为一子内存块,对应为结点。在一较佳的实施方式中,所述方法还包括分配用于存储自定义链表信息的内存,所述自定义链表信息包括用于存储自定义链表的内存块的首地址和自定义链表中结点数量。通过存储自定义链表信息,便于在使用时调用自定义链表的信息。例如,如图3所示,实施例中分配内存的方法示意图。自定义链表信息包括:自定义链表中存储数据的结点的总数,自定义链表中结点的总数,扩展结点的数量,以及用于存储自定义链表的内存块的首地址。定义结构体CList结构体中成员变量说明如下nCount:用于统计自定义链表中存储数据的结点个数;nTotle:用于记录自定义链表中结点的总个数;nIncreate:用于记录自定义链表中扩展结点的个数;pszDataList:指针类型,用于记录存储自定义链表的内存的首地址。在pszDataList记录的首地址开始的内存中存储自定义链表。自定义链表的每个结点中存储用于存储任意类型数据的内存块的首地址。定义函数原型PCListHeadclist_initilize(intnIncreate)使用该函数动态分配用于存储自定义链表的内存块。参数:nIncreate,自定义链表中扩展结点的个数。在初始创建时,自定义链表中结点数量为0,将预设的自定义链表的结点总数赋值给参数nIncreate。每个结点占4字节,动态分配4×nIncreate个字节的内存块,用以存储所述自定义链表。初始化成功后,返回动态分配的内存的首地址赋给pszDataList,nCount置为0,nTotle赋值为参数nIncreate。在一较佳的实施方式中,自定义链表中结点所占字节数相同,例如4字节。所述步骤S200后还包括:在访问自定义链表中指定位置的结点对应数据时,以自定义链表的首地址为起点,依据每个结点所占字节数和所述指定位置确定指定位置的结点的地址,按所述地址读取所述本文档来自技高网...
一种内存管理的方法和系统

【技术保护点】
一种内存管理的方法,其特征在于,所述方法包括:步骤1,依据预设的自定义链表中结点数量,分配用于存储所述自定义链表的内存块;步骤2,自定义链表的每个结点中存储的内容为用于存储任意类型数据的内存块的首地址,所述首地址对应的内存块中存储的数据为所述结点对应的任意类型数据;所述内存块为地址连续的一块内存。

【技术特征摘要】
1.一种内存管理的方法,其特征在于,所述方法包括:步骤1,依据预设的自定义链表中结点数量,分配用于存储所述自定义链表的内存块;步骤2,自定义链表的每个结点中存储的内容为用于存储任意类型数据的内存块的首地址,所述首地址对应的内存块中存储的数据为所述结点对应的任意类型数据;所述内存块为地址连续的一块内存;其中,自定义链表中结点所占字节数相同,自定义链表各个结点对应的数据的类型相同;所述步骤2后还包括:步骤31,在访问自定义链表中指定位置的结点对应数据时,以自定义链表的首地址为起点,依据每个结点所占字节数和所述指定位置确定指定位置的结点的地址;步骤32,按所述地址读取所述指定位置的结点中存储的内存块的首地址;步骤33,依据所述首地址访问内存块中存储的数据;所述方法还包括:步骤21,分配用于存储自定义链表信息的内存,所述自定义链表信息包括用于存储自定义链表的内存块的首地址和自定义链表中结点数量。2.根据权利要求1所述的内存管理的方法,其特征在于,所述步骤2后还包括:步骤41,在插入数据时,比较待插入数据同自定义链表中结点对应数据的大小,按从小到大的顺序确定待插入数据对应结点在自定义链表中位置;步骤42,如果所述位置的结点不为空,则对于所述位置和所述位置之后的每个不为空的结点,将结点存储的数据后移到下一个结点中存储;步骤43,将存储待插入数据的内存块的首地址存入所述位置的结点。3.根据权利要求2所述的内存管理的方法,其特征在于,所述步骤2后还包括:步骤51,在查找数据时,按二分法将自定义链表结点对应的数据同待查找的数据比较;步骤52,返回查找结果。4.根据权利要求1所述的内存管理的方法,其特征在于,所述步骤2后还包括:步骤61,当在自定义链表的指定位置添加新结点数据时,如果指定位置结点不为空,则对于指定位置和指定位置之后的每个不为空的结点,将结点中存储的数据后移到下一个结点中存储;步骤62,将待添加的新结点数据存入所述位置的结点内;所述新结点数据为...

【专利技术属性】
技术研发人员:张孝岐
申请(专利权)人:北京新媒传信科技有限公司
类型:发明
国别省市:

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

1