【技术实现步骤摘要】
堆内存分配方法、装置及存储介质
[0001]本申请涉及数据处理领域,特别涉及一种堆内存分配方法、装置及存储介质。
技术介绍
[0002]堆内存是指应用程序在运行的过程中动态地向操作系统申请的内存。也即是,在应用程序运行的过程中,操作系统可以基于应用程序的申请向应用程序分配堆内存。其中,应用程序在运行的过程中,可能会多次向操作系统申请堆内存,且每次申请的堆内存的内存大小可能相同,也可能不同。
[0003]目前,应用程序在运行的过程中可能会出现逻辑错误的情况,在这种情况下,写入堆内存的数据需要的内存大小可能会大于应用程序申请的堆内存的内存大小,这样,写入堆内存的数据会占用其他堆内存的内存空间,导致其他堆内存的数据被改写,从而发生堆内存写越界。并且,在引起堆内存写越界的原因不变的情况下,堆内存写越界会重复发生。
[0004]对于这种情况,当操作系统向应用程序分配堆内存时,会在堆内存的末地址写入一个指定魔术字。之后,操作系统可以检测堆内存的末地址写入的数据,当堆内存的末地址写入的数据为指定魔术字时,确定没有发生堆内存 ...
【技术保护点】
【技术特征摘要】
1.一种堆内存分配方法,其特征在于,所述方法包括:获取当前申请堆内存的应用程序对应的文件名、行号和内存申请大小,所述文件名是指所述应用程序的源代码文件的名称,所述行号是指所述源代码文件中用于申请堆内存的代码所在行的编号,所述内存申请大小是指所述应用程序当前申请的堆内存的大小;从越界记录文件中查找目标记录,其中,所述越界记录文件包括多条记录,每条记录包括文件名、行号和越界次数,所述目标记录是指所述多条记录中包括的文件名和行号分别与所述应用程序对应的文件名和行号相同的记录;如果查找到所述目标记录,则根据所述目标记录包括的越界次数,确定理论内存扩充大小;根据所述内存申请大小和所述理论内存扩充大小,向所述应用程序分配堆内存。2.如权利要求1所述的方法,其特征在于,所述根据所述目标记录包括的越界次数,确定理论内存扩充大小,包括:将所述目标记录包括的越界次数与单次扩充大小之间的乘积,确定为所述理论内存扩充大小。3.如权利要求1所述的方法,其特征在于,所述根据所述内存申请大小和所述理论内存扩充大小,向所述应用程序分配堆内存,包括:如果所述理论内存扩充大小没有超过内存扩充门限,则将所述理论内存扩充大小作为实际内存扩充大小,根据所述内存申请大小和所述实际内存扩充大小,向所述应用程序分配堆内存。4.如权利要求1所述的方法,其特征在于,所述根据所述内存申请大小和所述理论内存扩充大小,向所述应用程序分配堆内存,包括:如果所述理论内存扩充大小超过内存扩充门限,则将所述内存扩充门限作为实际内存扩充大小,根据所述内存申请大小和所述实际内存扩充大小,向所述应用程序分配堆内存。5.如权利要求3或4所述的方法,其特征在于,所述应用程序的堆内存的内存头包括扩充大小字段;所述根据所述内存申请大小和所述实际内存扩充大小,向所述应用程序分配堆内存之后,还包括:将所述实际内存扩充大小写入所述扩充大小字段中。6.如权利要求1所述的方法,其特征在于,所述从越界记录文件中查找目标记录之后,还包括:如果未查找到所述目标记录,则根据所述内存申请大小,向所述应用程序分配堆内存。7.如权利要求1-6任一所述的方法,其特征在于,所述根据所述内存申请大小和所述理论内存扩充大小,向所述应用程序分配堆内存之后,还包括:根据当前分配给所述应用程序的堆内存的内存头,获取当前分配给所述应用程序的堆内存的末地址写入的数据;如果当前分配给所述应用程序的堆内存的末地址写入的数据不为指定数据,则确定当前已发生堆内存写越界,根据所述应用程序对应的文件名和行号,对所述目标记录包括的越界次数进行更...
【专利技术属性】
技术研发人员:雷建忠,刘飞,江波,
申请(专利权)人:北京华为数字技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。