一种数据存储方法及装置制造方法及图纸

技术编号:20025460 阅读:27 留言:0更新日期:2019-01-06 04:25
本发明专利技术公开了一种数据存储方法及装置,其中所述方法包括:确定用于对待存储数据进行存储的预设大小的内存块,其中,所述内存块中存储有有效数据;若所述有效数据的数据大小小于所述预设大小,确定所述内存块以及所述有效数据的存储参数,其中,所述存储参数用于指示所述内存块和所述有效数据的大小;基于所述存储参数,确定所述内存块中空闲内存的位置信息;基于所述位置信息,将所述待存储数据存储在所述空闲内存中。用于解决现有内存块的存储空间利用率低,系统内存浪费严重的技术问题。

【技术实现步骤摘要】
一种数据存储方法及装置
本专利技术涉及计算机
,特别涉及一种数据存储方法及装置。
技术介绍
在现有技术中,一般的软件编程,数据存储申请内存都是由系统分配,每次分配后一般不会用尽空闲内存块的全部空间,而这些剩余的空间又不适于再分配给其它数据对象,因而在程序运行一段时间之后,存储空间可能出现大量的“内存碎片”。此时,虽然系统还有很多剩余内存,用户却申请不到,造成内存浪费,甚至导致系统崩溃。可见,现有内存块的存储空间利用率低,系统内存浪费严重。
技术实现思路
本专利技术实施例提供一种数据存储方法及装置,用于解决现有内存块的存储空间利用率低,系统内存浪费严重的技术问题。第一方面,本专利技术实施例提供了一种数据存储方法,包括:确定用于对待存储数据进行存储的预设大小的内存块,其中,所述内存块中存储有有效数据;若所述有效数据的数据大小小于所述预设大小,确定所述内存块以及所述有效数据的存储参数,其中,所述存储参数用于指示所述内存块和所述有效数据的大小;基于所述存储参数,确定所述内存块中空闲内存的位置信息;基于所述位置信息,将所述待存储数据存储在所述空闲内存中。在本专利技术实施例中,在内存块中存储有有效数据时,只要内存块中存在有空闲内存,在确定出指示所述有效数据以及内存块的数据大小的存储参数之后,便可以确定出所述内存块中空闲内存的位置信息,进一步地,将所述待存储数据存储在所述位置信息对应的空闲内存中。也就是说,在内存块存储有有效数据的情况下,仍能使用内存块中的空闲内存来存储数据,从而使内存块被充分使用,提高了内存块的存储空间利用率。可选地,所述方法还包括:确定所述内存块的第一首地址和第一末地址,所述有效数据的第二首地址和第二末地址;判断所述空闲内存的存储大小是否大于所述待存储数据的数据大小;若为是,判断所述第二末地址是否位于所述第二首地址之后;若所述第二末地址位于所述第二首地址之后,确定所述空闲内存位于所述内存块的尾部,所述空闲内存具体为所述第二末地址与所述第一末地址间的尾部空闲内存。在本专利技术实施例中,若内存块中存储有有效数据,当内存块的空闲内存的存储大小大于待存储数据的数据大小时,能够将待存储数据存储至该空闲内存中,也就是说,通过内存块能够循环存储数据,从而提高了内存块的利用率。可选地,基于所述位置信息,将所述待存储数据存储在所述空闲内存中,包括:判断所述尾部空闲内存的存储大小是否不小于所述待存储数据的数据大小;若为是,则从所述内存块的所述第二末地址起存储所述待存储数据至所述尾部空闲内存中。可选地,所述方法还包括:若所述尾部空闲内存的存储大小小于所述待存储数据的数据大小,判断所述第二末地址是否与所述第一末地址为同一地址;若为是,确定所述空闲内存位于所述内存块的头部,所述空闲内存具体为所述第一首地址与所述第二首地址间的头部空闲内存;将所述待存储数据存储至所述头部空闲内存。可选地,所述方法还包括:若所述第二末地址与所述第一末地址非同一地址,将所述待存储数据的部分数据存储至所述第二末地址与所述第一末地址之间的内存中,且将所述待存储数据中除所述部分数据外的其余数据存储至所述第一首地址至所述第二首地址间的内存中。可选地,所述方法还包括:若所述第二末地址位于所述第二首地址之前,确定所述空闲内存位于所述内存块的中间,所述空闲内存具体为所述第二末地址与所述第一末地址间的内存;将所述待存储数据存储至所述第二末地址与所述第一末地址间的内存中。可选地,所述方法还包括:若所述空闲内存的存储大小小于所述待存储数据的数据大小,判断所述第二末地址是否在位于所述第二首地址之后;若所述第二末地址位于所述第二首地址之后,在所述第一末地址之后扩容第一预设长度,其中,扩容前所述第二末地址与所述第一末地址间的尾部空闲内存的存储大小与所述第一预设长度之和等于所述待存储数据的数据大小;将所述待存储数据存储至所述第二末地址之后的内存中。在本专利技术实施例中,即便是存储有有效数据的内存块中的空闲内存大小小于待存储数据的大小,可以通过对该内存块扩容,即扩充一定空间,从而对待存储数据进行存储,进一步地提高了内存块的利用率。可选地,所述方法还包括:若所述第二末地址位于所述第二首地址之前,在所述第一末地址之后扩容第二预设长度,将所述有效数据的前部分复制到扩容后的内存块的尾部,其中,所述第二预设长度等于所述待存储数据的数据长度;将所述待存储数据存储至所述第二末地址之后的内存中。第二方面,本专利技术实施例还提供了一种数据存储装置,包括:第一确定单元,用于对待存储数据进行存储的预设大小的内存块,其中,所述内存块中存储有有效数据;第二确定单元,若所述有效数据的数据大小小于所述预设大小,确定所述内存块以及所述有效数据的存储参数,其中,所述存储参数用于指示所述内存块和所述有效数据的大小;第三确定单元,基于所述存储参数,确定所述内存块中空闲内存的位置信息;存储单元,基于所述位置信息,将所述待存储数据存储在所述空闲内存中。可选地,所述第三确定单元还用于:确定所述内存块的第一首地址和第一末地址,所述有效数据的第二首地址和第二末地址;判断所述空闲内存的存储大小是否大于所述待存储数据的数据大小;若为是,判断所述第二末地址是否位于所述第二首地址之后;若所述第二末地址位于所述第二首地址之后,确定所述空闲内存位于所述内存块的尾部,所述空闲内存具体为所述第二末地址与所述第一末地址间的尾部空闲内存。可选地,所述存储单元用于:判断所述尾部空闲内存的存储大小是否不小于所述待存储数据的数据大小;若为是,则从所述内存块的所述第二末地址起存储所述待存储数据至所述尾部空闲内存中。可选地,所述存储单元还用于:若所述尾部空闲内存的存储大小小于所述待存储数据的数据大小,判断所述第二末地址是否与所述第一末地址为同一地址;若为是,确定所述空闲内存位于所述内存块的头部,所述空闲内存具体为所述第一首地址与所述第二首地址间的头部空闲内存;将所述待存储数据存储至所述头部空闲内存。可选地,所述存储单元还用于:若所述第二末地址与所述第一末地址非同一地址,将所述待存储数据的部分数据存储至所述第二末地址与所述第一末地址之间的内存中,且将所述待存储数据中除所述部分数据外的其余数据存储至所述第一首地址至所述第二首地址间的内存中。可选地,所述存储单元还用于:若所述第二末地址位于所述第二首地址之前,确定所述空闲内存位于所述内存块的中间,所述空闲内存具体为所述第二末地址与所述第一末地址间的内存;将所述待存储数据存储至所述第二末地址与所述第一末地址间的内存中。可选地,所述存储单元还用于:若所述空闲内存的存储大小小于所述待存储数据的数据大小,判断所述第二末地址是否在位于所述第二首地址之后;若所述第二末地址位于所述第二首地址之后,在所述第一末地址之后扩容第一预设长度,其中,扩容前所述第二末地址与所述第一末地址间的尾部空闲内存的存储大小与所述第一预设长度之和等于所述待存储数据的数据大小;将所述待存储数据存储至所述第二末地址之后的内存中。可选地,所述存储单元还用于:若所述第二末地址位于所述第二首地址之前,在所述第一末地址之后扩容第二预设长度,将所述有效数据的前部分复制到扩容后的内存块的尾部,其中,所述第二预设长度等于所述待存储数据的数据长度;将所述待存储数据存储至所述第本文档来自技高网...

【技术保护点】
1.一种数据存储方法,其特征在于,包括:确定用于对待存储数据进行存储的预设大小的内存块,其中,所述内存块中存储有有效数据;若所述有效数据的数据大小小于所述预设大小,确定所述内存块以及所述有效数据的存储参数,其中,所述存储参数用于指示所述内存块和所述有效数据的大小;基于所述存储参数,确定所述内存块中空闲内存的位置信息;基于所述位置信息,将所述待存储数据存储在所述空闲内存中。

【技术特征摘要】
1.一种数据存储方法,其特征在于,包括:确定用于对待存储数据进行存储的预设大小的内存块,其中,所述内存块中存储有有效数据;若所述有效数据的数据大小小于所述预设大小,确定所述内存块以及所述有效数据的存储参数,其中,所述存储参数用于指示所述内存块和所述有效数据的大小;基于所述存储参数,确定所述内存块中空闲内存的位置信息;基于所述位置信息,将所述待存储数据存储在所述空闲内存中。2.如权利要求1所述的方法,其特征在于,所述方法还包括:确定所述内存块的第一首地址和第一末地址,所述有效数据的第二首地址和第二末地址;判断所述空闲内存的存储大小是否大于所述待存储数据的数据大小;若为是,判断所述第二末地址是否位于所述第二首地址之后;若所述第二末地址位于所述第二首地址之后,确定所述空闲内存位于所述内存块的尾部,所述空闲内存具体为所述第二末地址与所述第一末地址间的尾部空闲内存。3.如权利要求2所述的方法,其特征在于,基于所述位置信息,将所述待存储数据存储在所述空闲内存中,包括:判断所述尾部空闲内存的存储大小是否不小于所述待存储数据的数据大小;若为是,则从所述内存块的所述第二末地址起存储所述待存储数据至所述尾部空闲内存中。4.如权利要求3所述的方法,其特征在于,所述方法还包括:若所述尾部空闲内存的存储大小小于所述待存储数据的数据大小,判断所述第二末地址是否与所述第一末地址为同一地址;若为是,确定所述空闲内存位于所述内存块的头部,所述空闲内存具体为所述第一首地址与所述第二首地址间的头部空闲内存;将所述待存储数据存储至所述头部空闲内存。5.如权利要求4所述的方法,其特征在于,所述方法还包括:若所述第二末地址与所述第一末地址非同一地址,将所述待存储数据的部分数据存储至所述第二末地址与所述第一末地址之间的内存中,且将所述待存储数据中除所述部分数据外的其余数据存储至所述第一首地址至所述第二首地址间的内存中。6.如权利要求2所述的方法,其特征在于,所述方法还包括:若所述第二末地址位于所述第二首...

【专利技术属性】
技术研发人员:赵慧子王沅召徐静仪杨煜豪陈琳婷
申请(专利权)人:珠海格力电器股份有限公司
类型:发明
国别省市:广东,44

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

1