一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

动态内存管理方法与流程

2022-03-22 20:15:46 来源:中国专利 TAG:
1.本发明涉及一种动态内存管理方法,属于内存管理
技术领域
:。
背景技术
::2.代码程序一般使用malloc、free函数进行动态内存分配与释放,malloc函数调用mmap函数通过操作系统来动态的申请内存空间,在动态内存使用完后调用free函数将该内存空间释放。在很多编程环境中,存在多个拥有不同属性的内存空间,不同属性的内存空间就需要提供相应的动态内存管理的接口。现有的malloc、free函数支持用户课题对单一空间属性的内存空间进行动态管理,无法满足多空间属性的动态内存管理需求。技术实现要素:3.本发明的目的是提供一种动态内存管理方法,以解决在支持多空间属性的编程环境中,单纯使用malloc、free函数无法满足多空间属性的动态内存管理需求的问题。4.为达到上述目的,本发明采用的技术方案是:提供一种动态内存管理方法,基于以下函数接口:xspace_malloc函数,用于动态申请x属性内存空间;xspace_free函数,用于释放x属性内存空间;get_allocatable_xspace_size函数,用于返回当前剩余的可动态分配的x属性内存空间的大小;包括以下步骤:s1、用户使用加载器加载目标码运行课题,并在运行课题时指定x属性内存空间的总大小;s2、加载器接收用户指定的x属性内存空间的总大小,开辟相应大小的x属性内存空间;s3、加载器加载课题目标码,将目标码中的静态x属性内存空间映射到s2中所开辟的x属性内存空间的前半部分,剩余的后半部分x属性内存空间即为动态x属性内存空间,将动态x属性内存空间的起始地址和大小写入与编译器约定的变量xspace_malloc_start_addr和xspace_malloc_total_size中;s4、用户课题在代码中调用xspace_malloc函数动态申请x属性内存空间,xspace_malloc函数读取xspace_malloc_start_addr和xspace_malloc_total_size变量的值,在当前剩余的动态x属性内存空间内进行内存分配,内存分配成功后将空间首地址返回给用户程序,内存分配失败则返回-1至用户程序;s5、在完成s4中申请的动态x属性内存空间的使用后,用户课题在代码中调用xspace_free函数将该x属性内存空间释放;s6、用户课题可以在代码中调用get_allocatable_xspace_size获取当前剩余的动态x属性内存空间大小,在需要使用动态x属性空间时,重复s4、s5的步骤进行动态x属性内存空间的申请与释放。5.由于上述技术方案的运用,本发明与现有技术相比具有下列优点:本发明提出一种动态内存管理方法,支持用户课题对多空间属性内存空间的动态申请和释放,突破常规malloc、free函数只支持对单一属性空间动态管理的限制,满足支持多属性内存空间的编程环境下对多空间属性的内存空间进行动态管理的需求。附图说明6.附图1为本发明一种动态内存管理方法的流程图。具体实施方式7.实施例:本发明提供一种动态内存管理方法,基于以下函数接口:xspace_malloc函数,用于动态申请x属性内存空间;xspace_free函数,用于释放x属性内存空间;get_allocatable_xspace_size函数,用于返回当前剩余的可动态分配的x属性内存空间的大小;包括以下步骤:s1、用户使用加载器加载目标码运行课题,并在运行课题时指定x属性内存空间的总大小;s2、加载器接收用户指定的x属性内存空间的总大小,开辟相应大小的x属性内存空间;s3、加载器加载课题目标码,将目标码中的静态x属性内存空间映射到s2中所开辟的x属性内存空间的前半部分,剩余的后半部分x属性内存空间即为动态x属性内存空间,将动态x属性内存空间的起始地址和大小写入与编译器约定的变量xspace_malloc_start_addr和xspace_malloc_total_size中;s4、用户课题在代码中调用xspace_malloc函数动态申请x属性内存空间,xspace_malloc函数读取xspace_malloc_start_addr和xspace_malloc_total_size变量的值,在当前剩余的动态x属性内存空间内进行内存分配,内存分配成功后将空间首地址返回给用户程序,内存分配失败则返回-1至用户程序;s5、在完成s4中申请的动态x属性内存空间的使用后,用户课题在代码中调用xspace_free函数将该x属性内存空间释放,例如使用动态x属性内存空间进行计算,完成计算后就可以把该空间释放掉;s6、用户课题可以在代码中调用get_allocatable_xspace_size获取当前剩余的动态x属性内存空间大小,在需要使用动态x属性空间时,重复s4、s5的步骤进行动态x属性内存空间的申请与释放。8.对上述实施例的进一步解释如下:用户课题使用内存空间的方式包括静态申明和动态分配两种,静态申明是用户代码中使用编译器提供的空间属性对应的关键字申明的全局变量和数组等,这些静态变量和数组会在用户程序的目标码中占据相应大小的x属性内存空间;动态分配的方式是用户程序中调用xspace_malloc、xspace_free函数进行x属性内存空间的动态申请和释放,动态分配的x属性内存空间位于静态x属性内存空间的后面。9.本发明提出的一种动态内存管理方法,基于加载器对不同属性内存空间的管理,编译器提供xspace_malloc、xspace_free和get_allocatable_xspace_size等函数接口,支持用户课题对多空间属性的内存空间进行动态管理;其中,xspace_malloc函数用于动态申请x属性内存空间,xspace_free函数用于释放x属性内存空间,get_allocatable_xspace_size函数返回当前剩余的可动态分配的x属性内存空间大小。10.在运行用户课题时需要指定使用的x属性内存空间的总大小,加载器在加载目标码的过程中会开辟该指定大小的x属性内存空间,将目标码中的静态x属性内存空间映射到x属性内存空间的前半部分,剩余的x属性内存空间就是用户程序运行时可以动态申请使用的x属性内存空间。11.加载器将动态x属性内存空间的起始地址和大小传递给xspace_malloc函数,xspace_malloc函数在剩余的x属性动态内存空间内进行内存分配。12.动态内存管理方法的具体流程如下:s1、用户在运行课题时指定x属性内存空间的总大小。13.s2、加载器接收用户指定的x属性内存空间总大小,开辟相应大小的x属性内存空间。14.s3、加载器将目标码中的静态x属性内存空间映射到所开辟的x属性内存空间的前半部分,将剩余的动态x属性内存空间的起始地址和大小写入与编译器约定的变量xspace_malloc_start_addr和xspace_malloc_total_size中。15.s4、用户程序调用xspace_malloc函数动态申请x属性内存空间,xspace_malloc函数读取xspace_malloc_start_addr和xspace_malloc_total_size变量的值,在剩余的动态x属性内存空间内进行内存分配,内存分配成功后将空间首地址返回给用户程序,失败则返回-1。16.s5、在完成所申请动态x属性内存空间的使用后,用户程序调用xspace_free函数将该x属性内存空间释放。17.s6、用户程序可以调用get_allocatable_xspace_size获取当前剩余的动态x属性内存空间大小,根据需要重复s4、s5的步骤进行动态x属性内存空间的申请与释放。18.采用上述一种动态内存管理方法时,其支持用户课题对多空间属性内存空间的动态申请和释放,突破常规malloc、free函数只支持对单一属性空间动态管理的限制,满足支持多属性内存空间的编程环境下对多空间属性的内存空间进行动态管理的需求。19.上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献