CN111309538B - 内存检查方法、装置、电子设备及存储介质 - Google Patents
内存检查方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111309538B CN111309538B CN202010125124.8A CN202010125124A CN111309538B CN 111309538 B CN111309538 B CN 111309538B CN 202010125124 A CN202010125124 A CN 202010125124A CN 111309538 B CN111309538 B CN 111309538B
- Authority
- CN
- China
- Prior art keywords
- memory
- release
- allocated
- mode
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请公开了一种内存检查方法、装置、电子设备及存储介质,属于计算机技术领域。本申请实施例通过释放内存时通过截获内存释放指令,得到待释放内存的地址,获取该地址对应的内存信息,以获取到该地址的内存被分配时的分配方式,从而对比分配方式和内存释放指令所指示的释放方式是否匹配,如果不匹配则却确定内存出现异常,这样通过释放内存时主动对比分配和释放是否匹配,能够及时发现内存问题,在开发阶段即可自动化检查,来发现问题,高效且无遗漏,而无需等到运行出现问题时事后通过人工分析定位,能够有效避免了内存出现问题,也有效提高了检查效率。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种内存检查方法、装置、电子设备及存储介质。
背景技术
在使用内存池管理内存的项目中,可能存在两种内存分配和释放方式,其中一种是直接调用标准库分配内存(可以记为malloc,英文全称为memory allocation),调用free释放内存,free为标准库内存释放指令。另一种是通过内存池分配和释放内存。例如,接入的第三方软件开发工具包(Software Development Kit,sdk)没有用内存池,那就存在标准库malloc/free,内存池pool_malloc/pool_free不匹配的问题,其中,pool为内存池的意思。比方说,用内存池pool_malloc分配内存,用free释放内存可能导致进程崩溃,用malloc分配内存,用pool_free释放内存可能导致内存泄露。
目前,内存检查方法中,使用内存池分配内存时一般通过开发阶段打印日志定位,或在进程出现异常时事后分析,再定位到出现的内存问题,但事后分析难免有遗漏,若产品已经发布上线还需要重新更新才能解决问题。因而,上述检查方法的实时性差,不能及时发现问题,检查效率差。
发明内容
本申请实施例提供了一种内存检查方法、装置、电子设备及存储介质,能够提高获取效率,提高检查效率。该技术方案如下:
一方面,提供了一种内存检查方法,该方法包括:
响应于内存释放操作,调用内存释放指令;
截获所述内存释放指令,得到所述内存释放指令所指示待释放内存的地址;
获取所述地址对应的内存信息,所述内存信息用于指示所述地址的内存被分配时的分配方式;
响应于所述内存信息中分配方式与所述内存释放指令所指示待释放内存的释放方式不匹配,确定内存出现问题。
一方面,提供了一种内存检查装置,所述装置包括:
调用模块,用于响应于内存释放操作,调用内存释放指令;
截获模块,用于截获所述内存释放指令,得到所述内存释放指令所指示待释放内存的地址;
获取模块,用于获取所述地址对应的内存信息,所述内存信息用于指示所述地址的内存被分配时的分配方式;
确定模块,用于响应于所述内存信息中分配方式与所述内存释放指令所指示待释放内存的释放方式不匹配,确定内存出现问题。
在一种可能实现方式中,所述确定模块用于执行下述任一项:
响应于所述内存信息中分配方式为通过内存池分配,且所述内存释放指令所指示待释放内存的释放方式为不是通过内存池释放,确定内存出现问题;
响应于所述内存信息中分配方式为不是通过内存池分配,且所述内存释放指令所指示待释放内存的释放方式为通过内存池释放,确定内存出现问题。
在一种可能实现方式中,所述装置还包括:
处理模块,用于响应于所述内存信息中分配方式与所述内存释放指令所指示待释放内存的释放方式匹配,执行所述内存释放指令。
在一种可能实现方式中,所述处理模块用于执行下述任一项:
响应于所述内存信息中分配方式为通过内存池分配,且所述内存释放指令所指示待释放内存的释放方式为通过内存池释放,执行所述内存释放指令;
响应于所述内存信息中分配方式为不是通过内存池分配,且所述内存释放指令所指示待释放内存的释放方式为不是通过内存池释放,执行所述内存释放指令。
在一种可能实现方式中,所述内存信息包括分配内存字段,所述分配内存字段用于标识所述地址的内存被分配时的分配方式。
在一种可能实现方式中,所述分配内存字段为1用于指示所述地址的内存被分配时通过内存池分配;所述分配内存字段为0用于指示所述地址的内存被分配时不是通过内存池分配。
在一种可能实现方式中,所述内存信息还包括释放内存字段,所述释放内存字段用于标识所述内存释放指令所指示待释放内存的释放方式。
在一种可能实现方式中,所述装置还包括:
记录模块,用于在内存信息中的释放内存字段记录所述内存释放指令所指示待释放内存的释放方式。
在一种可能实现方式中,所述释放内存字段为1用于指示所述内存释放指令所指示待释放内存的释放方式为通过内存池释放;所述释放内存字段为0用于指示所述内存释放指令所指示待释放内存的释放方式为不是通过内存池释放。
在一种可能实现方式中,所述确定模块用于执行下述任一项:
响应于所述内存信息中分配内存字段为1,释放内存字段为0,确定内存出现问题;
响应于所述内存信息中分配内存字段为0,释放内存字段为1,确定内存出现问题。
在一种可能实现方式中,所述处理模块用于执行下述任一项:
响应于所述内存信息中分配内存字段为1,释放内存字段为1,执行所述内存释放指令;
响应于所述内存信息中分配内存字段为0,释放内存字段为0,执行所述内存释放指令。
一方面,提供了一种电子设备,该电子设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的内存检查方法所执行的操作。
一方面,提供了一种存储介质,该存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行以实现如上述任一种可能实现方式的内存检查方法所执行的操作。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例通过释放内存时通过截获内存释放指令,得到待释放内存的地址,获取该地址对应的内存信息,以获取到该地址的内存被分配时的分配方式,从而对比分配方式和内存释放指令所指示的释放方式是否匹配,如果不匹配则却确定内存出现异常,这样通过释放内存时主动对比分配和释放是否匹配,能够及时发现内存问题,在开发阶段即可自动化检查,来发现问题,高效且无遗漏,而无需等到运行出现问题时事后通过人工分析定位,能够有效避免了内存出现问题,也有效提高了检查效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种内存检查方法的实施环境;
图2是本申请实施例提供的一种内存检查方法的流程图;
图3是本申请实施例提供的一种内存信息的示意图;
图4是本发明实施例提供的内存分配过程的流程图;
图5是本发明实施例提供的内存释放过程的流程图;
图6是本申请实施例提供的一种内存检查装置的结构示意图;
图7是本申请实施例提供的一种终端的结构示意图;
图8是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个第一位置是指两个或两个以上的第一位置。
以下,对本申请涉及到的术语进行解释。
malloc:标准库分配内存,所有其他内存分配最终会调用。
free:标准库释放内存,所有其他内存释放最终会调用。
hook_malloc:截获/劫持malloc,在调用malloc时被hook_malloc截获/劫持。
hook_free:截获/劫持free,在调用free时被hook_free截获/劫持。
pool_malloc,内存池分配内存,项目自定义的内存分配函数。
pool_free,内存池释放内存,项目自定义的内存释放函数。
图1是本申请实施例提供的一种内存检查方法的实施环境,该实施环境中可以包括终端101和服务器102,终端101和服务器102的数量均可以为一个或多个,本申请实施例对此不作限定。其中,该终端101可以通过有线或无线网络与服务器102连接。
运行任一程序的过程通常都是在内存中进行,因而,运行任一程序时需要为其分配内存,在运行结束,则可以释放该内存。在一种可能的实时场景中,任一项目文件编写完成后,需要对该项目文件进行测试,测试通过后该项目文件能够被发布以供用户使用。在测试过程中,即可以测试项目文件运行时分配内存和释放内存的情况,以便于后续发布后能够正常实现内存的分配和释放。
其中,该测试过程可以在终端101上进行,也可以在服务器102上进行。在一种可能实现方式中,开发人员能够终端101上编写项目文件,并对编写好的项目文件进行测试,在项目文件测试通过后,可以将该项目文件发送至服务器102进行发布。在另一种可能实现方式中,该服务器102中可以包括测试服务器和发布服务器,开发人员还可以在终端101上编写项目文件后,将该项目文件发送至测试服务器进行测试,并在测试完成后发送至发布服务器进行发布。本申请实施例对此不作限定。
在本申请实施例中,在产品的开发测试阶段,电子设备可以生成测试用例,执行一些处理步骤,对内存分配和释放情况进行测试。具体的,电子设备可以响应于内存分配操作,调用内存分配指令,执行相应的内存分配步骤,后续对内存进行释放时能够调用内存释放指令,执行相应的内存释放指令。当然,在后续发布后使用时,电子设备也可以在运行程序时,为其分配内存,在结束程序运行时释放内存,本申请对分配和释放步骤的执行时机不作具体限定。
图2是本申请实施例提供的一种内存检查方法的流程图,该方法应用于电子设备中,该电子设备可以为终端,也可以为服务器,本申请实施例对此不作限定。参见图2,该内存检查方法可以包括:
201、电子设备响应于内存释放操作,调用内存释放指令。
该内存释放操作为触发内存释放指令的操作。具体的,该内存释放操作可以为任一结束程序运行的操作,例如,该内存释放操作可以为测试用例中程序运行结束的操作步骤,也可以为用户关闭任一功能界面的操作,申请实施例对该内存释放操作的内容不作限定。对于该内存释放指令,该内存释放指令用于对已分配的内存进行释放。该已分配的内存为基于内存分配指令进行分配的内存。
例如,对于该内存分配指令和内存释放指令,电子设备在执行某个应用逻辑时,需要调用内存,则调用内存分配指令,为其分配内存,后续在结束该应用逻辑时,调用内存释放指令,释放该内存。
202、电子设备截获该内存释放指令,得到该内存释放指令所指示待释放内存的地址。
电子设备可以截获该内存释放指令,以截获到其中的待释放内存的地址。其中,该地址可以为系统内存地址,该地址用于标识内存的位置。通过该地址,可以获知该内存的位置,以便于对该内存进行释放。
在一种可能实现方式中,该内存释放指令中的目标字段可以存储有该地址。相应的,该步骤202中电子设备获取该地址的过程则可以为:电子设备截获(hook)到内存释放指令后,可以读取该内存释放指令中的目标字段,得到该地址。
在一种可能实现方式中,该截获过程可以通过截获指令实现。具体的,电子设备可以调用截获指令,截获内存释放指令。通过截获过程,得到待释放内存的地址,从而可以对该地址的内存的分配方式和释放方式进行分析,来确定内存是否存在异常,在内存释放时自动化对内存进行检查,而不是在出现异常后再对异常进行定位分析,能够有效提高检查效率,且在开发测试阶段即可发现问题,避免了产品发布后需要更新的情况。
例如,以该内存释放指令为free为例,电子设备可通过截获指令hook_free,在调用free时截获该内存释放指令free。在一个具体示例中,该内存释放指令free为一种标准库函数,截获标准库函数时,可以采用fishbook技术实现。又例如,以内存释放指令为pool_free为例,电子设备可通过截获指令hook_free,在调用pool_free时截获该内存释放指令pool_free。
203、电子设备获取该地址对应的内存信息,该内存信息用于指示该地址的内存被分配时的分配方式。
在本申请实施例中,内存的地址可以对应有内存信息,电子设备在截获到地址后,即可通过地址与内存信息的对应关系,获取到该地址对应的内存信息。其中,该内存信息可以在该内存被分配时生成,通过该内存信息可以获知该内存在被分配时的分配方式是哪种。
通过上述过程,电子设备获知该地址的内存被分配时的分配方式,可以执行后续的步骤,来判断本次释放内存时,释放方式与分配方式是否匹配,以避免二者不匹配时内存出现问题。
其中,该内存信息可以在该内存分配时生成,具体的,该生成过程可以通过下述步骤一至步骤四实现:
步骤一、电子设备响应于内存分配操作,调用内存分配指令。
在步骤一中,与内存释放操作同理,该内存分配操作可以为测试用例中的操作步骤,例如,测试用例中某个操作步骤需要运行某段程序,则该程序的运行步骤即为上述内存分配操作,响应于该内存分配操作,电子设备需要调用内存分配指令,为该程序运行分配内存。该内存分配操作也可以为用户操作,例如,用户点击某个功能按钮以触发某种应用逻辑的执行,该用户操作即为内存分配操作,为了支持该应用逻辑的执行,电子设备需要调用内存分配指令,为其分配内存。本申请实施例对该内存分配操作的内容不作限定。
步骤二、电子设备截获该内存分配指令,得到该内存分配指令所指示的待分配内存的地址。
该步骤二中的截获过程与上述内存释放指令的截获过程同理,在此不多作赘述。
步骤三、电子设备生成该待分配内存的内存信息。
该内存信息可以为数据结构形式的信息,通过数据结构中的某一位或多位来标识相应的信息。例如,该内存信息可以为一个字节8比特(bit)的信息,其中的1bit位可以用来标识上述内存被分配时的分配方式。
步骤四、电子设备对应存储该地址与该待分配内存的内存信息。
在上述四个步骤中,电子设备可以在内存分配时通过截获内存分配指令,截获到内存的地址,记录该内存分配时的分配方式,并与该内存的地址对应存储。这样在内存释放时,电子设备可以根据该内存的地址,获取到对应的内存信息,来确定该内存被分配时的分配方式。
在一种可能实现方式中,分配方式可以包括两种,一种是通过内存池分配,另一种是不通过内存池分配。相应的,该内存释放指令所指示待释放内存的释放方式可以包括两种,一种是通过内存池释放,另一种是不通过内存池释放。例如,分配方式可以包括通过内存池分配和通过标准库分配,释放方式可以包括通过内存池释放和通过标准库释放。
在一种可能实现方式中,该内存信息包括分配内存字段,该分配内存字段用于标识该地址的内存被分配时的分配方式。具体的,该分配内存字段为1用于指示该地址的内存被分配时通过内存池分配;该分配内存字段为0用于指示该地址的内存被分配时不是通过内存池分配。当然,此处的字段标识仅为一种示例,均可以由相关技术人员根据需求进行设置,例如,也可以用0标识通过内存池分配,用1标识不通过内存池分配,本申请实施例对此不作限定。
例如,该内存信息可以为一个字节8比特(bit)的信息,该分配内存字段可以为该字节中的1bit。具体的,可以用一个字节8bit来记录内存是否是通过内存池pool_malloc进行分配的,假设用第7位表示分配内存,第7位为1标识通过内存池分配,第7位为0标识不是通过内存池分配。
在一种可能实现方式中,上述内存信息中也可以记录有释放内存字段,这样通过字段对比即可进行后续的匹配步骤。也即是,该内存信息还包括释放内存字段,该释放内存字段用于标识该内存释放指令所指示待释放内存的释放方式。
在该实现方式中,该步骤203之前,该电子设备可以在内存信息中的释放内存字段记录该内存释放指令所指示待释放内存的释放方式。在一个具体的可能实施例中,该释放内存字段为1用于指示该内存释放指令所指示待释放内存的释放方式为通过内存池释放;该释放内存字段为0用于指示该内存释放指令所指示待释放内存的释放方式为不是通过内存池释放。同理的,此处的字段标识仅为一种示例,均可以由相关技术人员根据需求进行设置,例如,也可以用0标识通过内存池释放,用1标识不通过内存池释放,本申请实施例对此不作限定。
例如,该内存信息可以为一个字节8比特(bit)的信息,该分配内存字段可以为该字节中的1bit。具体的,可以用一个字节8bit来记录内存是否是通过内存池pool_free进行释放的,假设用第6位表示释放内存,第6位为1标识通过内存池释放,第6位为0标识不是通过内存池释放。
204、电子设备响应于该内存信息中分配方式与该内存释放指令所指示待释放内存的释放方式不匹配,确定内存出现问题。
电子设备获取到内存信息后,获知该内存分配时的分配方式后,可以确定内存释放指令所指示待释放内存的释放方式,如果二者不匹配,则内存会出现问题。例如,如果分配时通过内存池分配,释放时不通过内存池释放,这样可以认为分配方式与释放方式不匹配,则内存会出现问题。
具体的,该步骤204可以包括以下两种情况:
情况一:电子设备响应于该内存信息中分配方式为通过内存池分配,且该内存释放指令所指示待释放内存的释放方式为不是通过内存池释放,确定内存出现问题。
情况二:电子设备响应于该内存信息中分配方式为不是通过内存池分配,且该内存释放指令所指示待释放内存的释放方式为通过内存池释放,确定内存出现问题。
在上述通过分配内存字段和释放内存字段来标识分配方式和释放方式的实现方式中,该步骤204相应可以为:电子设备响应于该内存信息中分配内存字段为1,释放内存字段为0,确定内存出现问题;或,电子设备响应于该内存信息中分配内存字段为0,释放内存字段为1,确定内存出现问题。例如,在上述通过一个字节8bit来记录内存信息的示例中,如果第6位和第7位不相同时,电子设备可以确定出现问题。
通过上述分配内存时生成内存信息,后续释放内存时通过确定释放方式与分配方式是否匹配的方式,对内存进行检查,能够及时有效地发现内存问题,在测试开发阶段即可通过自动化检查发现异常,而无需等到发布后出现事故后再定位分析,检查效率高。
在一种可能实现方式中,在该步骤204之后,电子设备在确定内存出现问题后,可以发送或显示提示信息,该提示信息用于提示内存出现问题。如果该电子设备为终端,可以显示该提示信息。如果该电子设备为服务器,可以向终端发送提示信息,进而终端可以显示该提示信息,以便于提示相关技术人员内存出现问题。具体的,该提示信息可以采用邮件的形式,也可以采用短消息的形式,还可以采用其他形式,本申请实施例对此不作限定。
205、电子设备响应于该内存信息中分配方式与该内存释放指令所指示待释放内存的释放方式匹配,执行该内存释放指令。
在上述步骤203后,还可能出现一种情况:分配方式和释放方式匹配,在这种情况下,电子设备可以确定内存无问题,因而可以正常执行释放步骤。
具体的,该步骤205可以包括两种情况:
情况一:电子设备响应于该内存信息中分配方式为通过内存池分配,且该内存释放指令所指示待释放内存的释放方式为通过内存池释放,执行该内存释放指令。
情况二:电子设备响应于该内存信息中分配方式为不是通过内存池分配,且该内存释放指令所指示待释放内存的释放方式为不是通过内存池释放,执行该内存释放指令。
在上述通过分配内存字段和释放内存字段来标识分配方式和释放方式的实现方式中,该步骤205相应可以为:电子设备响应于该内存信息中分配内存字段为1,释放内存字段为1,执行该内存释放指令;或,响应于该内存信息中分配内存字段为0,释放内存字段为0,执行该内存释放指令。
例如,如图3所示,在具体示例中,内存信息为在内存分配和释放时记录的信息,在此称之为记录值,该记录值可以为8bit的信息。以记录值中第6位标识内存释放方式,第7位标识内存分配方式为例,该记录值可以包括(1)至(4)四种情况,在情况(1)和(2)中,记录值中第6位和第7位均为0或者均为1时,分配方式malloc和释放方式free匹配,分配方式pool_malloc和pool_free匹配,因而,这两种情况下内存正常。在情况(3)和情况(4)中,如果一个为1另一个为0,也即是分配方式pool_malloc与释放方式free不匹配,或分配方式malloc和释放方式pool_free不匹配,在这种情况下内存异常。
对于该记录值,下面通过图4和图5所示示例,对内存分配和释放过程进行举例说明。如图4所示,在内存分配时,电子设备能够通过截获/劫持标准库malloc拿到地址,来创建记录(也即是内存信息),并标记第7位(也即是分配内存字段),来记录内存是否来自pool_malloc。具体的,在分配内存时劫持malloc获得系统内存地址,创建该地址的记录(1个字节),如果来自malloc,也即是,分配方式是通过标准库函数分配,而不是通过内存池分配,记录值的第7位可以为0;如果来自pool_malloc,也即是,分配方式是通过内存池分配,则记录值的第7位可以为1。
如图5所示,在释放内存时,电子设备可以判断是否由pool_free释放,与分配方式对比,能有效检查内存池分配内存与标准库分配和释放不匹配的问题,避免由此导致的内存异常。具体的,在释放内存时劫持free获得系统内存地址,查找该地址的记录(1个字节),如果来自free,也即是分配方式为通过标准库函数分配,不是通过内存池分配,则记录值的第6位(也即是释放内存字段)可以为0;如果来自pool_free,也即是,分配方式为通过内存池分配,则可以标记记录值的第6位为1。如果记录值的第6位为0,第7位为1,则表示通过pool_malloc分配内存,通过free释放内存;如果记录值的第6位为1,第7位为0,则表示通过malloc分配内存,通过pool_free释放内存,这两种情况中分配方式与释放方式不匹配,导致内存异常。
本申请实施例提供的方法,通过截获内存释放指令,来获取内存分配时的分配方式,从而对分配方式与释放方式进行对比,来判断内存是否异常,能够在开发测试阶段就主动检查不匹配问题,自动化检查高效且不遗漏。
本申请实施例通过释放内存时通过截获内存释放指令,得到待释放内存的地址,获取该地址对应的内存信息,以获取到该地址的内存被分配时的分配方式,从而对比分配方式和内存释放指令所指示的释放方式是否匹配,如果不匹配则却确定内存出现异常,这样通过释放内存时主动对比分配和释放是否匹配,能够及时发现内存问题,在开发阶段即可自动化检查,来发现问题,高效且无遗漏,而无需等到运行出现问题时事后通过人工分析定位,能够有效避免了内存出现问题,也有效提高了检查效率。
图6是本申请提供的一种内存检查装置的结构示意图,参见图6,该装置包括:
调用模块601,用于响应于内存释放操作,调用内存释放指令;
截获模块602,用于截获该内存释放指令,得到该内存释放指令所指示待释放内存的地址;
获取模块603,用于获取该地址对应的内存信息,该内存信息用于指示该地址的内存被分配时的分配方式;
确定模块604,用于响应于该内存信息中分配方式与该内存释放指令所指示待释放内存的释放方式不匹配,确定内存出现问题。
在一种可能实现方式中,该确定模块604用于执行下述任一项:
响应于该内存信息中分配方式为通过内存池分配,且该内存释放指令所指示待释放内存的释放方式为不是通过内存池释放,确定内存出现问题;
响应于该内存信息中分配方式为不是通过内存池分配,且该内存释放指令所指示待释放内存的释放方式为通过内存池释放,确定内存出现问题。
在一种可能实现方式中,该装置还包括:
处理模块,用于响应于该内存信息中分配方式与该内存释放指令所指示待释放内存的释放方式匹配,执行该内存释放指令。
在一种可能实现方式中,该处理模块用于执行下述任一项:
响应于该内存信息中分配方式为通过内存池分配,且该内存释放指令所指示待释放内存的释放方式为通过内存池释放,执行该内存释放指令;
响应于该内存信息中分配方式为不是通过内存池分配,且该内存释放指令所指示待释放内存的释放方式为不是通过内存池释放,执行该内存释放指令。
在一种可能实现方式中,该内存信息包括分配内存字段,该分配内存字段用于标识该地址的内存被分配时的分配方式。
在一种可能实现方式中,该分配内存字段为1用于指示该地址的内存被分配时通过内存池分配;该分配内存字段为0用于指示该地址的内存被分配时不是通过内存池分配。
在一种可能实现方式中,该内存信息还包括释放内存字段,该释放内存字段用于标识该内存释放指令所指示待释放内存的释放方式。
在一种可能实现方式中,该装置还包括:
记录模块,用于在内存信息中的释放内存字段记录该内存释放指令所指示待释放内存的释放方式。
在一种可能实现方式中,该释放内存字段为1用于指示该内存释放指令所指示待释放内存的释放方式为通过内存池释放;该释放内存字段为0用于指示该内存释放指令所指示待释放内存的释放方式为不是通过内存池释放。
在一种可能实现方式中,该确定模块604用于执行下述任一项:
响应于该内存信息中分配内存字段为1,释放内存字段为0,确定内存出现问题;
响应于该内存信息中分配内存字段为0,释放内存字段为1,确定内存出现问题。
在一种可能实现方式中,该处理模块用于执行下述任一项:
响应于该内存信息中分配内存字段为1,释放内存字段为1,执行该内存释放指令;
响应于该内存信息中分配内存字段为0,释放内存字段为0,执行该内存释放指令。
本申请实施例提供的装置,通过释放内存时通过截获内存释放指令,得到待释放内存的地址,获取该地址对应的内存信息,以获取到该地址的内存被分配时的分配方式,从而对比分配方式和内存释放指令所指示的释放方式是否匹配,如果不匹配则却确定内存出现异常,这样通过释放内存时主动对比分配和释放是否匹配,能够及时发现内存问题,在开发阶段即可自动化检查,来发现问题,高效且无遗漏,而无需等到运行出现问题时事后通过人工分析定位,能够有效避免了内存出现问题,也有效提高了检查效率。
需要说明的是:上述实施例提供的内存检查装置在检查内存时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将电子设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的内存检查装置与内存检查方法实施例属于同一构思,其具体实现过程详见内存检查方法实施例,这里不再赘述。
图7是本申请实施例提供的一种终端700的结构示意图,该终端700可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端700还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端700包括有:处理器701和存储器702。
处理器701可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器701可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器701也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器701可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器701还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器702可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器702还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器702中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器701所执行以实现本申请中各个实施例提供的内存检查方法。
在一些实施例中,终端700还可选包括有:外围设备接口703和至少一个外围设备。处理器701、存储器702和外围设备接口703之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口703相连。具体地,外围设备包括:射频电路704、触摸显示屏705、摄像头组件706、音频电路707、定位组件708和电源707中的至少一种。
外围设备接口703可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器701和存储器702。在一些实施例中,处理器701、存储器702和外围设备接口703被集成在同一芯片或电路板上;在一些其他实施例中,处理器701、存储器702和外围设备接口703中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路704用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路704通过电磁信号与通信网络以及其他通信设备进行通信。射频电路704将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路704包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路704可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路704还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏705用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏705是触摸显示屏时,显示屏705还具有采集在显示屏705的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器701进行处理。此时,显示屏705还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏705可以为一个,设置终端700的前面板;在另一些实施例中,显示屏705可以为至少两个,分别设置在终端700的不同表面或呈折叠设计;在再一些实施例中,显示屏705可以是柔性显示屏,设置在终端700的弯曲表面上或折叠面上。甚至,显示屏705还可以设置成非矩形的不规则图形,也即异形屏。显示屏705可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件706用于采集图像或视频。可选地,摄像头组件706包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件706还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路707可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器701进行处理,或者输入至射频电路704以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端700的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器701或射频电路704的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路707还可以包括耳机插孔。
定位组件708用于定位终端700的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件708可以是基于GPS(Global PositioningSystem,全球定位系统)、北斗系统、格雷纳斯系统或伽利略系统的定位组件。
电源707用于为终端700中的各个组件进行供电。电源707可以是交流电、直流电、一次性电池或可充电电池。当电源707包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端700还包括有一个或多个传感器710。该一个或多个传感器710包括但不限于:加速度传感器711、陀螺仪传感器712、压力传感器713、光学传感器715以及接近传感器716。
加速度传感器711可以检测以终端700建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器711可以用于检测重力加速度在三个坐标轴上的分量。处理器701可以根据加速度传感器711采集的重力加速度信号,控制触摸显示屏705以横向视图或纵向视图进行用户界面的显示。加速度传感器711还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器712可以检测终端700的机体方向及转动角度,陀螺仪传感器712可以与加速度传感器711协同采集用户对终端700的3D动作。处理器701根据陀螺仪传感器712采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器713可以设置在终端700的侧边框和/或触摸显示屏705的下层。当压力传感器713设置在终端700的侧边框时,可以检测用户对终端700的握持信号,由处理器701根据压力传感器713采集的握持信号进行左右手识别或快捷操作。当压力传感器713设置在触摸显示屏705的下层时,由处理器701根据用户对触摸显示屏705的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
光学传感器715用于采集环境光强度。在一个实施例中,处理器701可以根据光学传感器715采集的环境光强度,控制触摸显示屏705的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏705的显示亮度;当环境光强度较低时,调低触摸显示屏705的显示亮度。在另一个实施例中,处理器701还可以根据光学传感器715采集的环境光强度,动态调整摄像头组件706的拍摄参数。
接近传感器716,也称距离传感器,通常设置在终端700的前面板。接近传感器716用于采集用户与终端700的正面之间的距离。在一个实施例中,当接近传感器716检测到用户与终端700的正面之间的距离逐渐变小时,由处理器701控制触摸显示屏705从亮屏状态切换为息屏状态;当接近传感器716检测到用户与终端700的正面之间的距离逐渐变大时,由处理器701控制触摸显示屏705从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图7中示出的结构并不构成对终端700的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图8是本申请实施例提供的一种服务器的结构示意图,该服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central ProcessingUnits,CPU)801和一个或一个以上的存储器802,其中,该存储器802中存储有至少一条程序代码,该至少一条程序代码由该处理器801加载并执行以实现上述各个实施例提供的内存检查方法。当然,该服务器800还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器800还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条程序代码的存储器,上述至少一条程序代码可由电子设备中的处理器执行以完成上述实施例中内存检查方法。例如,该计算机可读存储介质可以是ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-OnlyMemory,只读光盘)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上该仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (23)
1.一种内存检查方法,其特征在于,所述方法包括:
响应于内存释放操作,调用内存释放指令;
截获所述内存释放指令,得到所述内存释放指令所指示待释放内存的地址;
获取所述地址对应的内存信息,所述内存信息用于指示所述地址的内存被分配时的分配方式;
响应于所述内存信息中分配方式为通过内存池分配,且所述内存释放指令所指示待释放内存的释放方式为不是通过内存池释放,确定内存出现问题;
响应于所述内存信息中分配方式为不是通过内存池分配,且所述内存释放指令所指示待释放内存的释放方式为通过内存池释放,确定内存出现问题。
2.根据权利要求1所述的方法,其特征在于,所述内存信息的生成过程包括:
响应于内存分配操作,调用内存分配指令;
截获所述内存分配指令,得到所述内存分配指令所指示的待分配内存的地址;
生成所述待分配内存的内存信息;
对应存储所述地址与所述待分配内存的内存信息。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于所述内存信息中分配方式与所述内存释放指令所指示待释放内存的释放方式匹配,执行所述内存释放指令。
4.根据权利要求3所述的方法,其特征在于,所述响应于所述内存信息中分配方式与所述内存释放指令所指示待释放内存的释放方式匹配,执行所述内存释放指令,包括下述任一项:
响应于所述内存信息中分配方式为通过内存池分配,且所述内存释放指令所指示待释放内存的释放方式为通过内存池释放,执行所述内存释放指令;
响应于所述内存信息中分配方式为不是通过内存池分配,且所述内存释放指令所指示待释放内存的释放方式为不是通过内存池释放,执行所述内存释放指令。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述内存信息包括分配内存字段,所述分配内存字段用于标识所述地址的内存被分配时的分配方式。
6.根据权利要求5所述的方法,其特征在于,所述分配内存字段为1用于指示所述地址的内存被分配时通过内存池分配;所述分配内存字段为0用于指示所述地址的内存被分配时不是通过内存池分配。
7.根据权利要求5所述的方法,其特征在于,所述内存信息还包括释放内存字段,所述释放内存字段用于标识所述内存释放指令所指示待释放内存的释放方式。
8.根据权利要求7所述的方法,其特征在于,所述获取所述地址对应的内存信息之前,所述方法还包括:
在内存信息中的释放内存字段记录所述内存释放指令所指示待释放内存的释放方式。
9.根据权利要求7所述的方法,其特征在于,所述释放内存字段为1用于指示所述内存释放指令所指示待释放内存的释放方式为通过内存池释放;所述释放内存字段为0用于指示所述内存释放指令所指示待释放内存的释放方式为不是通过内存池释放。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括下述任一项:
响应于所述内存信息中分配内存字段为1,释放内存字段为0,确定内存出现问题;
响应于所述内存信息中分配内存字段为0,释放内存字段为1,确定内存出现问题。
11.根据权利要求9所述的方法,其特征在于,所述方法还包括下述任一项:
响应于所述内存信息中分配内存字段为1,释放内存字段为1,执行所述内存释放指令;
响应于所述内存信息中分配内存字段为0,释放内存字段为0,执行所述内存释放指令。
12.一种内存检查装置,其特征在于,所述装置包括:
调用模块,用于响应于内存释放操作,调用内存释放指令;
截获模块,用于截获所述内存释放指令,得到所述内存释放指令所指示待释放内存的地址;
获取模块,用于获取所述地址对应的内存信息,所述内存信息用于指示所述地址的内存被分配时的分配方式;
确定模块,用于响应于所述内存信息中分配方式为通过内存池分配,且所述内存释放指令所指示待释放内存的释放方式为不是通过内存池释放,确定内存出现问题;响应于所述内存信息中分配方式为不是通过内存池分配,且所述内存释放指令所指示待释放内存的释放方式为通过内存池释放,确定内存出现问题。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
处理模块,用于响应于所述内存信息中分配方式与所述内存释放指令所指示待释放内存的释放方式匹配,执行所述内存释放指令。
14.根据权利要求13所述的装置,其特征在于,所述处理模块用于执行下述任一项:
响应于所述内存信息中分配方式为通过内存池分配,且所述内存释放指令所指示待释放内存的释放方式为通过内存池释放,执行所述内存释放指令;
响应于所述内存信息中分配方式为不是通过内存池分配,且所述内存释放指令所指示待释放内存的释放方式为不是通过内存池释放,执行所述内存释放指令。
15.根据权利要求12-14任一项所述的装置,其特征在于,所述内存信息包括分配内存字段,所述分配内存字段用于标识所述地址的内存被分配时的分配方式。
16.根据权利要求15所述的装置,其特征在于,所述分配内存字段为1用于指示所述地址的内存被分配时通过内存池分配;所述分配内存字段为0用于指示所述地址的内存被分配时不是通过内存池分配。
17.根据权利要求15所述的装置,其特征在于,所述内存信息还包括释放内存字段,所述释放内存字段用于标识所述内存释放指令所指示待释放内存的释放方式。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括:
记录模块,用于在内存信息中的释放内存字段记录所述内存释放指令所指示待释放内存的释放方式。
19.根据权利要求17所述的装置,其特征在于,所述释放内存字段为1用于指示所述内存释放指令所指示待释放内存的释放方式为通过内存池释放;所述释放内存字段为0用于指示所述内存释放指令所指示待释放内存的释放方式为不是通过内存池释放。
20.根据权利要求19所述的装置,其特征在于,所述确定模块用于执行下述任一项:
响应于所述内存信息中分配内存字段为1,释放内存字段为0,确定内存出现问题;
响应于所述内存信息中分配内存字段为0,释放内存字段为1,确定内存出现问题。
21.根据权利要求19所述的装置,其特征在于,处理模块用于执行下述任一项:
响应于所述内存信息中分配内存字段为1,释放内存字段为1,执行所述内存释放指令;
响应于所述内存信息中分配内存字段为0,释放内存字段为0,执行所述内存释放指令。
22.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条程序代码,所述至少一条程序代码由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求11任一项所述的内存检查方法所执行的操作。
23.一种存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行以实现如权利要求1至权利要求11任一项或所述的内存检查方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010125124.8A CN111309538B (zh) | 2020-02-27 | 2020-02-27 | 内存检查方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010125124.8A CN111309538B (zh) | 2020-02-27 | 2020-02-27 | 内存检查方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309538A CN111309538A (zh) | 2020-06-19 |
CN111309538B true CN111309538B (zh) | 2023-03-21 |
Family
ID=71154931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010125124.8A Active CN111309538B (zh) | 2020-02-27 | 2020-02-27 | 内存检查方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111309538B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105589809A (zh) * | 2014-10-24 | 2016-05-18 | 中国科学院深圳先进技术研究院 | 一种内存管理方法及装置 |
CN106855788A (zh) * | 2015-12-09 | 2017-06-16 | 北京信威通信技术股份有限公司 | 一种堆空间的内存分配管理方法 |
CN106991010A (zh) * | 2017-03-22 | 2017-07-28 | 武汉虹信通信技术有限责任公司 | 一种用于流媒体服务器的内存集中动态分配方法 |
CN107451054A (zh) * | 2017-07-26 | 2017-12-08 | 武汉虹信通信技术有限责任公司 | 一种用于linux环境中的内存池调试方法 |
CN107562586A (zh) * | 2017-08-16 | 2018-01-09 | 努比亚技术有限公司 | 一种内存检测方法、设备及计算机存储介质 |
-
2020
- 2020-02-27 CN CN202010125124.8A patent/CN111309538B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105589809A (zh) * | 2014-10-24 | 2016-05-18 | 中国科学院深圳先进技术研究院 | 一种内存管理方法及装置 |
CN106855788A (zh) * | 2015-12-09 | 2017-06-16 | 北京信威通信技术股份有限公司 | 一种堆空间的内存分配管理方法 |
CN106991010A (zh) * | 2017-03-22 | 2017-07-28 | 武汉虹信通信技术有限责任公司 | 一种用于流媒体服务器的内存集中动态分配方法 |
CN107451054A (zh) * | 2017-07-26 | 2017-12-08 | 武汉虹信通信技术有限责任公司 | 一种用于linux环境中的内存池调试方法 |
CN107562586A (zh) * | 2017-08-16 | 2018-01-09 | 努比亚技术有限公司 | 一种内存检测方法、设备及计算机存储介质 |
Non-Patent Citations (1)
Title |
---|
基于C++的高效内存池的设计与实现基于C++的高效内存池的设计与实现;鄢涛 等;《成都大学学报(自然科学版)》;第36卷(第3期);257-261 * |
Also Published As
Publication number | Publication date |
---|---|
CN111309538A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111274155B (zh) | 动态库的内存操作记录方法、装置、设备及存储介质 | |
CN108897659B (zh) | 修改日志级别的方法、装置及存储介质 | |
CN110659127A (zh) | 一种处理任务的方法、装置及系统 | |
CN108132790B (zh) | 检测无用代码的方法、装置及计算机存储介质 | |
CN112256320B (zh) | 版本号生成方法、装置、终端及存储介质 | |
CN111752817A (zh) | 页面加载时长的确定方法、装置、设备及存储介质 | |
CN111177013A (zh) | 日志数据获取方法、装置、计算机设备及存储介质 | |
CN113064823A (zh) | 汽车的零部件功能测试方法、装置及计算机存储介质 | |
CN115766490A (zh) | 校准数据的获取方法、校准数据的存储方法、装置及设备 | |
CN110704324A (zh) | 应用调试方法、装置及存储介质 | |
CN110677713B (zh) | 视频图像处理方法及装置、存储介质 | |
CN112052167A (zh) | 生成测试脚本代码的方法和装置 | |
CN109783176B (zh) | 切换页面的方法和装置 | |
CN111797017B (zh) | 存储日志的方法、装置、测试设备及存储介质 | |
CN110399246B (zh) | 程序修复方法和装置 | |
CN108132817B (zh) | 对象管理方法及装置 | |
CN111258683A (zh) | 检测方法、装置、计算机设备及存储介质 | |
CN111309538B (zh) | 内存检查方法、装置、电子设备及存储介质 | |
CN111294470B (zh) | 呼叫处理方法、装置、设备及存储介质 | |
CN113268234A (zh) | 页面生成方法、装置、终端和存储介质 | |
CN113688043A (zh) | 应用程序测试方法、装置、服务器、iOS设备及介质 | |
CN112015612B (zh) | 一种获取卡顿信息的方法及装置 | |
CN113312249A (zh) | 日志数据生成方法、日志数据显示方法及装置 | |
CN112000576A (zh) | 代码数据的检测方法、装置、设备及存储介质 | |
CN113408989A (zh) | 汽车数据的比对方法、装置及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40023728 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |