一种C语言内存管理的方法技术

技术编号:36296121 阅读:20 留言:0更新日期:2023-01-13 10:10
本发明专利技术公开了一种C语言内存管理的方法,涉及内存管理技术领域,具体为一种C语言内存管理的方法,包括:建立自定义数组:建立用于存放内存地址的数组;定义申请内存函数:应用申请内存时调用自定义申请内存函数;释放内存函数:释放是调用自动以释放内存函数;打印内存信息函数:打印内存未释放地址信息:程序结束前调用打印内存信息函数。该C语言内存管理的方法,预先自定义数组用于存放申请内存的文件名、位置、大小、指针,在自定义申请函数阶段,可调用malloc函数,遍历MallocPrt数组,将内存指针赋值到MallocPrt为null的位置,并在对应数组赋值文件名、位置、大小,当需要释放内存时,可直接将对应的指针找出,调用free函数,释放该内存。该内存。

【技术实现步骤摘要】
一种C语言内存管理的方法


[0001]本专利技术涉及内存管理
,具体为一种C语言内存管理的方法。

技术介绍

[0002]C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言编译器普遍存在于各种不同的操作系统中,其设计也影响了Java、 Python等编程语言。有一句话说:“C生万物,编程之本”。也就是说目前流行的各大编程语言,随着技术的其他需求和支持,都是基于C而演变的,C 语言以其代码量小,执行速度快,功能强大,编程自由等优点,至今应用在很多行业中。
[0003]C语言比较灵活简洁,但这同样使得对开发人员的要求变高,其中很常见的问题便是内存泄漏问题。C语言提供申请内存malloc函数,可以申请指定大小的内存,内存用完后需要调用free函数对申请的内存释放,如果不释放则造成内存泄露,内存占用越来越多,导致服务器宕机。预防内存泄漏问题有多种方法,比如加强代码检视、工具检测和内存测试等,这几种方式要求开发人员熟练掌握内存检测工具,专业性要求更高,为了更好的管理内存,我们专利技术了一种简单内存管理办法,以解决上述存在的问题。

技术实现思路

[0004](一)解决的技术问题
[0005]本专利技术提供了一种C语言内存管理的方法,具备可以有效防止内存泄露和快速定位内存泄露位置的优点,解决了上述提出的问题。
[0006](二)技术方案
[0007]本专利技术提供如下技术方案:一种C语言内存管理的方法,包括:
[0008]建立自定义数组:建立用于存放文件的数组;
[0009]定义申请内存函数:应用申请内存时调用自定义申请内存函数;
[0010]释放内存函数:释放是调用自动以释放内存函数;
[0011]打印内存信息函数:程序结束前调用打印内存信息函数,打印出未释放的内存信息,以此判断是否存在内存未释放的情况。
[0012]优选的,所述建立自定义数组具体为:首先自定义几个大的数组,分别存放申请内存的文件名fineNameS、申请内存的位置或行号fineLine、申请内存的大小MallocSize、申请内存指针MallocPrt。
[0013]优选的,所述自定义申请函数实现流程为:
[0014]输入文件名称、申请内存的位置或行号、申请内存大小;
[0015]遍历MallocPrt数组,如果该位置为null,记录数组位置后跳出;
[0016]调用malloc函数,申请内存后指针赋值到MallocPrt为null的位置;
[0017]在对应fineNameS数组位置赋值输入文件名;
[0018]在对应fineLine数组位置赋值申请内存位置或行号;
[0019]在对应MallocSize数组位置赋值申请大小。
[0020]优选的,所述自定义释放函数实现流程为:
[0021]输入要释放的内存指针;
[0022]遍历MallocPrt数组,如果该位置值等于输入的内存指针,记录数组位置后跳出;
[0023]调用free函数,释放该内存,同时MallocPrt数组该位置赋值为null;
[0024]在对应fineNameS数组位置赋值0;
[0025]在对应fineLine数组位置赋0;
[0026]在对应MallocSize数组位置赋0。
[0027]优选的,所述打印内存信息函数实现流程为:
[0028]无输入参数;
[0029]遍历MallocPrt数组,如果该位置不为null,则printf打印出该指针对应的fineNameS数组、MallocSize数组和fineLine数组信息,继续遍历完所有数组,则可以打印出所有未释放的内存信息;
[0030]如遍历MallocPrt全为null则打印所有内存已经释放的提示信息。
[0031](三)有益效果
[0032]本专利技术具备以下有益效果:
[0033]1、该C语言内存管理的方法,预先自定义数组用于存放申请内存的文件名、位置、大小、指针,在自定义申请函数阶段,可调用malloc函数,将指针赋值到MallocPrt为null的位置,并在对应数组赋值文件名、位置、大小,当需要释放内存时,可直接将对应的指针找出,调用free函数,释放该内存,避免内存占用过多造成泄漏。
[0034]2、该C语言内存管理的方法,在内存释放后且无输入参数时,遍历 MallocPrt数组,如果该位置不为null,则printf打印出该指针对应的 fineNameS、MallocSize以及fineLine数组信息,继续遍历完所有数组,则可打印出所有未释放的内存信息,当内存出现泄漏时,则可直接对未释放的内存信息进行找寻,从而实现对内存泄漏位置的快速定位。
具体实施方式
[0035]下面将结合本专利技术实施例,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0036]一种C语言内存管理的方法,其特征在于:包括:
[0037]建立自定义数组:建立用于存放文件的数组;
[0038]定义申请内存函数:应用申请内存时调用自定义申请内存函数;
[0039]释放内存函数:释放是调用自动以释放内存函数;
[0040]打印内存信息函数:程序结束前调用打印内存信息函数,打印出未释放的内存信息,以此判断是否存在内存未释放的情况。
[0041]所述建立自定义数组具体为:首先自定义几个大的数组,分别存放申请内存的文件名fineNameS、申请内存的位置或行号fineLine、申请内存的大小MallocSize、申请内存指针MallocPrt。
[0042]预先自定义数组用于存放申请内存的文件名、位置、大小、指针,便于使用时指针进行赋值与释放。
[0043]所述自定义申请函数实现流程为:
[0044]输入文件名称、申请内存的位置或行号、申请内存大小;
[0045]遍历MallocPrt数组,如果该位置为null,记录数组位置后跳出;
[0046]调用malloc函数,申请内存后指针赋值到MallocPrt为null的位置;
[0047]在对应fineNameS数组位置赋值输入文件名;
[0048]在对应fineLine数组位置赋值申请内存位置或行号;
[0049]在对应MallocSize数组位置赋值申请大小。
[0050]在自定义申请函数阶段,可调用malloc函数,将指针赋值到MallocPrt 为null的位置,并在对应数组赋值文件名、位置、大小,当需要释放内存时,可直接将对应的指针找出,调用free函数,释放该内存,避免内存占用过多造成泄漏。
[0051]所述自定义释放函数实现流程为:
...

【技术保护点】

【技术特征摘要】
1.一种C语言内存管理的方法,其特征在于:包括:建立自定义数组:建立用于存放文件的数组;定义申请内存函数:应用申请内存时调用自定义申请内存函数;释放内存函数:释放时调用自动以释放内存函数;打印内存信息函数:程序结束前调用打印内存信息函数,打印出未释放的内存信息,以此判断是否存在内存未释放的情况。2.根据权利要求1所述的一种C语言内存管理的方法,其特征在于:所述建立自定义数组具体为:首先自定义几个大的数组,分别存放申请内存的文件名fineNameS、申请内存的位置或行号fineLine、申请内存的大小MallocSize、申请内存指针MallocPrt。3.根据权利要求1所述的一种C语言内存管理的方法,其特征在于:所述自定义申请函数实现流程为:输入文件名称、申请内存的位置或行号、申请内存大小;遍历MallocPrt数组,如果该位置为null,记录数组位置后跳出;调用malloc函数,申请内存后指针赋值到MallocPrt为null的位置;在对应fineNameS数组位置赋值输入文件...

【专利技术属性】
技术研发人员:滕靖国王谨旗
申请(专利权)人:山东农业工程学院
类型:发明
国别省市:

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

1