The invention discloses a memory management method, which comprises the following steps: when the memory release request sent by the target function is obtained, the stack elements corresponding to the sub-functions of the target function and the target function are searched in the preset stack, and the memory corresponding to the found stack elements is released. When a memory release request is obtained, the stack elements corresponding to the target function and its subfunctions can be found in the default stack. Then, release the memory corresponding to the stack element found. In this way, it can reduce the probability that memory has not been freed or occupied for a long time because of not explicitly indicating the release of a certain memory, further reduce memory leaks, improve memory utilization, and further improve computer performance. The invention also discloses a memory management device, a device and a readable storage medium, which have corresponding technical effects.
【技术实现步骤摘要】
一种内存管理方法、装置、设备及可读存储介质
本专利技术涉及计算机应用
,特别是涉及一种内存管理方法、装置、设备及可读存储介质。
技术介绍
在c语言中,使用malloc(memoryallocation,动态内存分配)等内存分配函数获取内存即是从堆中分配内存。从堆中分配的内存需要程序员手动释放(如在函数结尾处明确写出或表示释放该内存的指令,或在结束内存使用时,明确表示释放该内存的请求)。如果不释放,而系统内存管理器又不能自动回收这些堆内存,那这些内存就一直被占用。如果一直申请堆内存,而不释放,内存会越来越少,很明显的结果是系统变慢或者申请不到新的堆内存。而过度的申请堆内存,会导致堆被压爆,出现内存泄漏。现有的,内存管理模块,可简化上述申请和释放动态内存的过程,为程序员提供内存跟踪信息。但是,在使用这些内存管理模块时,每一个内存释放时都需要程序员明确的做出释放等问题。在这种情况下,仍会导致堆内存未释放或无法释放,进一步造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。综上所述,如何有效地解决内存泄漏等问题,是目前本领域技术人员急需解决的技术问题。
技术实现思路
本专利技术的目的是提供一种内存管理方法、装置、设备及可读存储介质,以减少内存泄漏。为解决上述技术问题,本专利技术提供如下技术方案:一种内存管理方法,包括:当获取到目标函数发送的内存释放请求时,在预设堆栈中查找所述目标函数和所述目标函数的子函数分别对应的栈元素;释放查找出的栈元素对应的内存。优选地,在所述在预设堆栈中查找所述目标函数和所述目标函数的子函数分别对应的栈元素之前,还包括:按照函 ...
【技术保护点】
1.一种内存管理方法,其特征在于,包括:当获取到目标函数发送的内存释放请求时,在预设堆栈中查找所述目标函数和所述目标函数的子函数分别对应的栈元素;释放查找出的栈元素对应的内存。
【技术特征摘要】
1.一种内存管理方法,其特征在于,包括:当获取到目标函数发送的内存释放请求时,在预设堆栈中查找所述目标函数和所述目标函数的子函数分别对应的栈元素;释放查找出的栈元素对应的内存。2.根据权利要求1所述的内存管理方法,其特征在于,在所述在预设堆栈中查找所述目标函数和所述目标函数的子函数分别对应的栈元素之前,还包括:按照函数调用顺序将各个函数分别对应的栈元素压入预设堆栈中。3.根据权利要求1所述的内存管理方法,其特征在于,在所述在预设堆栈中查找所述目标函数和所述目标函数的子函数分别对应的栈元素之前,还包括:当接收到内存申请请求时,在预设堆栈中查找是否存在相同申请位置的第一栈元素;如果是,则将所述第一栈元素的值作为所述内存申请请求的context;如果否,则将所述内存申请请求中的context作为新建第二栈元素的值并存入所述预设堆栈。4.根据权利要求1至3任一项所述的内存管理方法,其特征在于,在所述在预设堆栈中查找所述目标函数和所述目标函数的子函数分别对应的栈元素之前,还包括:新建Key结构数组,并将各个线程分别对应的堆内存的地址作为线程私有数据放入所述Key结构数组中。5.根据权利要求4所述的内存管理方法,其特征在于,所述释放查找出的栈元素对应的内存...
【专利技术属性】
技术研发人员:楚光庆,
申请(专利权)人:郑州云海信息技术有限公司,
类型:发明
国别省市:河南,41
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。