CN117093472A - 一种内存操作的处理方法、设备及存储介质 - Google Patents
一种内存操作的处理方法、设备及存储介质 Download PDFInfo
- Publication number
- CN117093472A CN117093472A CN202310854824.4A CN202310854824A CN117093472A CN 117093472 A CN117093472 A CN 117093472A CN 202310854824 A CN202310854824 A CN 202310854824A CN 117093472 A CN117093472 A CN 117093472A
- Authority
- CN
- China
- Prior art keywords
- target
- variable
- memory
- address corresponding
- memory address
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 344
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 230000006870 function Effects 0.000 claims abstract description 88
- 230000003068 static effect Effects 0.000 claims description 149
- 238000012545 processing Methods 0.000 claims description 46
- 238000000034 method Methods 0.000 claims description 38
- 238000007781 pre-processing Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 3
- 238000001514 detection method Methods 0.000 abstract description 65
- 238000004891 communication Methods 0.000 description 21
- 230000002159 abnormal effect Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 238000007726 management method Methods 0.000 description 15
- 238000010295 mobile communication Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 5
- 229920001621 AMOLED Polymers 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000003416 augmentation Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 101100346656 Drosophila melanogaster strat gene Proteins 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
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)
- Storage Device Security (AREA)
Abstract
本申请提供一种内存操作的处理方法、设备及存储介质,通过针对目标操作,获取目标操作对应的内存地址的操作范围,目标操作用于在内存中存储数据;基于安全函数,检测目标操作对应的内存地址的操作范围是否与目标变量的内存匹配,目标变量用于指示在内存中存储数据的数据量标准;当目标操作对应的内存地址的操作范围与目标变量的内存匹配时,执行目标操作,当目标操作对应的内存地址的操作范围与目标变量的内存不匹配时,对目标操作进行拦截。本申请摆脱了对编译器的依赖,通过安全函数,对目标操作对应的内存地址进行变量检测以及时发现并拦截内存错误,极大程度的减小了资源开销,提高了嵌入式软件运行安全性。
Description
技术领域
本申请涉及电子技术领域,尤其涉及一种内存操作的处理方法、设备及存储介质。
背景技术
内存是电子设备中基本且重要的器件之一,内存错误可能会引起运行结果错误,甚至运行程序崩溃。为此,需要通过内存错误检测,以提高程序的正确性、稳定性和安全性。
采用基于编译器的检测工具对内存错误的检测,以保障内存安全,提高系统的稳定性。其中,编译器即为编译程序(Compiler,compiling program),是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。
然而,由于编译器的实现算法较为复杂,在依赖于编译器对内存错误进行检测的过程中,所产生的资源开销较大,进而导致在内存错误检测过程中系统运行效率降低。
发明内容
本申请提供的一种内存操作的处理方法、设备及存储介质,目的在于解决在保障内存安全的过程中,由于资源开销较大而导致的系统运行效率低的问题。
为达到上述目的,本申请采用如下技术方案:
第一方面:本申请提供一种内存操作的处理方法,包括:针对目标操作,获取目标操作对应的内存地址的操作范围,目标操作用于在内存中存储数据;基于安全函数,检测目标操作对应的内存地址的操作范围是否与目标变量的内存匹配,目标变量用于指示在内存中存储数据的数据量标准;当目标操作对应的内存地址的操作范围与目标变量的内存匹配时,执行目标操作,当目标操作对应的内存地址的操作范围与目标变量的内存不匹配时,对目标操作进行拦截。
本申请基于安全函数,对目标操作对应的内存地址的操作范围进行检测,当目标操作对应的内存地址的操作范围与目标变量的内存不匹配时,表示该目标操作存在错误,对该目标操作进行拦截,以避免内存错误的发生,提高系统的稳定性。本申请提供的方法,摆脱了对编译器的依赖,通过安全函数,对目标操作对应的内存地址进行变量检测以及时发现并拦截内存错误,极大程度的减小了资源开销,在提高了嵌入式软件运行安全性的同时,提高了系统运行效率。
在一种可能的实现方式中,目标变量为目标堆变量,基于安全函数,检测目标操作对应的内存地址的操作范围是否与目标变量的内存匹配,包括:基于安全函数,查找与目标操作对应的内存地址匹配的内存块;当查找到内存块时,检测目标操作对应的内存地址的操作范围是否与目标堆变量的字节长度匹配,由此实现堆变量检测。
在一种可能的实现方式中,目标变量为目标静态变量,基于安全函数,检测目标操作对应的内存地址的操作范围是否与目标变量的内存匹配,包括:基于安全函数,查找与目标操作对应的内存地址匹配的节点;当查找到节点时,检测目标操作对应的内存地址的操作范围是否与目标静态变量的内存匹配,由此实现静态变量检测。
在一种可能的实现方式中,目标变量为目标堆变量和目标静态变量,基于安全函数,检测目标操作对应的内存地址的操作范围是否与目标变量的内存匹配,包括:基于安全函数,查找与目标操作对应的内存地址匹配的节点;当查找到节点时,检测目标操作对应的内存地址的操作范围是否与目标静态变量的内存匹配;当目标操作对应的内存地址的操作范围与目标静态变量的内存匹配时,基于安全函数,查找与目标操作对应的内存地址匹配的内存块;当查找到内存块时,检测目标操作对应的内存地址的操作范围是否与目标堆变量的字节长度匹配,由此实现对堆变量和静态变量的检测。
在一种可能的实现方式中,还包括:当未查找到节点时,基于安全函数,查找与目标操作对应的内存地址匹配的内存块;当查找到内存块时,检测目标操作对应的内存地址的操作范围是否与目标堆变量的字节长度匹配。
在一种可能的实现方式中,获取目标操作对应的内存地址的操作范围之前,还包括:对初始的变量进行预处理,获得目标变量。
在一种可能的实现方式中,目标变量为目标堆变量,对初始的变量进行预处理,获得目标变量,包括:在申请初始的堆变量的内存时,在初始的堆变量的节点处增加预设长度的节点信息,获得目标堆变量。
在一种可能的实现方式中,目标变量为目标静态变量,对初始的变量进行预处理,获得目标变量,包括:从初始的静态变量的信息中提取目标信息,获得静态变量的变量信息表,目标信息包括初始的静态变量的变量起始地址和初始的静态变量的变量数据长度;将静态变量的变量信息表,存储至固件中,获得目标静态变量。
第二方面,本申请提供一种电子设备,电子设备包括处理器以及存储器:
存储器用于存储程序代码,并将程序代码传输给处理器;
处理器用于根据程序代码中的指令执行如上述第一方面的一种内存操作的处理方法的步骤。
第三方面:本申请提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述第一方面的一种内存操作的处理方法的步骤。
附图说明
图1为本申请实施例提供的一种堆变量的内存操作处理应用场景示意图;
图2为本申请实施例提供的一种存储视频数据的应用场景示意图;
图3为本申请实施例提供的一种静态变量的内存操作处理应用场景示意图;
图4为本申请实施例提供的一种内存操作处理的应用场景示意图;
图5为本申请实施例提供的一种堆变量的内存操作处理方法的流程图;
图6为本申请实施例提供的一种额外申请字节长度的示意图;
图7为本申请实施例提供的一种静态变量的内存操作处理方法的流程图;
图8为本申请实施例提供的一种生成静态变量信息表的示意图;
图9为本申请实施例提供的一种内存操作处理方法的流程图;
图10为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
本申请说明书和权利要求书及附图说明中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了下述各实施例的描述清楚简洁,首先给出相关技术的简要介绍:
堆变量,亦称动态内存分配变量。程序在运行的时候,可以用动态内存分配函数(memory allocation,malloc)或新建函数(new)申请任意大小的内存,之后在适当的时候释放内存。
静态变量(Static Variable),在编程领域指在程序执行前系统就为之静态分配存储空间的一类变量,即在程序运行中时不再改变其分配情况的一类变量。具体地,静态变量的存放地址,在整个程序运行期间,都是固定不变的;而非静态变量的存放地址每次函数调用时都可能不同,只在函数的一次执行期间不变。如果没明确初始化,则静态变量会被自动初始化成全0,即每个字节都是0,局部非静态变量的值则随机。
内存越界,是指在操作某段内存时超过了该段内存的范围,越界到该段内存的前面或后面,是软件系统主要错误之一,其后果往往不可预料且严重。由于内存越界出现的时机是随机的,进而表现出来的问题以及造成的后果都是随机的,这会使技术人员很难找出这些错误(Bug)的现象和本质之间的联系,从而给的定位带来极大的困难。一般情况下,内存越界可分为读越界和写越界。
其中,读越界,即读了不属于自己的数据。如果所读的内存地址是无效的,程序立刻崩溃;如果所读内存地址是有效的,在读的时候不会马上出现问题,但由于读到的数据是随机的,因此它可能会造成随机的错误。写越界,又称为缓冲区溢出,所写入的数据对别的程序来说是随机的,同样会造成不可预料的后果。
在系统中通常会提供各种与内存操作相关的应用程序接口(API)函数,例如拷贝字节函数(memmove),内存拷贝函数(memcpy),初始化函数(memset),字串复制函数(strcpy),以及字符串连接函数(strcat)等。
在利用各种应用程序接口函数进行对应的内存操作的过程中,可能会出现内存越界改写的问题。示例性的,利用动态内存分配函数(malloc)进行动态内存分配时,申请了100个字节的情况下,可能实际对101个字节进行了改写;在静态变量A和静态变量B的内存地址相邻的情况下,基于应用程序接口函数对静态变量A进行相关操作时,改变了静态变量B的值,此时,静态变量B被越界改写。
针对上述内存发生错误,特别是内存被越界改写的情况,目前通常采用基于编译器的检测工具,来对内存错误进行检测,以确保电子设备的正常运转,提高电子设备的稳定性。
其中,编译器是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。不同的编译器,可以检测的内存错误类型存在一定差异。示例性,基于GNU编译器套件(GNU Compiler Collection,GCC)编译器的快速检测工具,可以检测堆栈和堆缓冲区上溢或下溢,释放之后的堆使用情况,超出范围的堆栈使用情况以及重复释放/错误释放等;基于IAR编译器的检测工具,可以检测整数溢出和折叠,未初始化指针引用,以及越界访问等。
然而,由于编译器的实现算法较为复杂,依赖于编译器对内存错误进行检测的过程中会产生较大的资源开销,同时,上述基于IAR编译器的检测工具的内存错误检测方法,需要依赖于技术人员手动改写代码,导致在保障内存安全的过程中,系统运行效率降低。
基于此,本申请提供一种内存操作的处理方法,基于安全函数,对目标操作对应的内存地址,执行变量检测,当检测出目标操作对应的内存地址对应的操作范围有误时,对该目标操作进行拦截,以保障内存安全,使得系统可以稳定运行。由于本申请中采用安全函数替换原有的应用程序接口函数,通过对目标操作对应的内存地址的操作范围进行检测,检测其是否与目标变量的内存匹配,其中目标变量可以包括目标堆变量,和/或目标变量,以检测该目标操作是否有误,避免内存错误的发生,提高系统稳定性。其过程摆脱了对编译器的依赖,通过安全函数,对目标操作对应的内存地址进行变量检测以及时发现错误操作,对其进行拦截,极大程度的减小了资源开销,在提高了嵌入式软件运行安全性的同时,提高了系统运行效率。
为了更好地理解本申请,下面首先对本申请的内存操作的处理的应用场景进行描述,图1-4是本申请实施例提供的内存操作处理的应用场景示意图。
如图1所示,该图为本申请实施例提供的一种堆变量的内存操作处理应用场景示意图。堆变量的内存操作处理可以由堆变量的内存检测装置执行,其中包括堆变量检测模块。在进行堆变量的内存操作处理前,针对初始的堆变量进行预处理,获得目标堆变量。
具体地,针对堆变量,在申请初始的堆变量的内存时,在初始的堆变量节点前额外申请预设字节长度的信息,获得增加长度后的堆变量,该增加长度后的堆变量为目标堆变量。
在获得目标堆变量后,当对目标堆变量的内存进行操作时,将目标操作对应的内存地址输入堆变量检测模块,基于安全函数执行堆变量检测。其中,本申请中的安全函数是通过对原有的内存操作应用程序接口函数进行改写,通过编译链接对原有的内存操作应用程序接口进行重定向得到的。
在堆变量检测的过程中,堆变量检测模块根据目标操作对应的内存地址,查找与该目标操作对应的内存地址对应的内存块,若查找到内存块,则对目标操作对应的内存地址的操作范围进行检测,即,检测其是否与目标堆变量的内存相匹配,若相匹配,则可以执行正常处理流程,即可以正常执行该目标操作;若不匹配,则证明该目标操作为错误操作,暂不执行该目标操作。
堆变量检测模块根据目标操作对应的内存地址,若未查找到内存块,则无需对目标操作对应的内存地址的操作范围进行检测,直接执行正常处理流程即可。
示例性的,如图2所示,该图为本申请实施例提供的一种存储视频数据的应用场景示意图。当用户需要将拍摄的视频数据存储在内存中时,点击保存按键,电子设备针对存储视频数据的目标操作,基于安全函数,检测目标操作对应的内存地址的操作范围是否与目标变量的内存匹配,当目标操作对应的内存地址的操作范围与目标变量的内存匹配时,将该视频数据存储在内存中,在界面中显示保存成功。当目标操作对应的内存地址的操作范围与目标变量的内存不匹配时,对目标操作进行拦截,不对该视频数据进行存储,在界面中显示保存失败。
如图3所示,该图为本申请实施例提供的一种静态变量的内存操作处理应用场景示意图。静态变量的内存操作处理可以由静态变量的内存检测装置执行,其中包括静态变量检测模块。在进行静态变量的内存操作处理前,针对初始的静态变量进行预处理,获得目标静态变量。
具体地,针对静态变量,从可执行可关联的文件格式(Executable and LinkingFormat,ELF)文件中提取初始的静态变量的目标信息,获得目标静态变量,在开机运行时将目标静态变量加载到内存中。
具体地,从ELF文件中提取初始的静态变量的目标信息,其中目标信息可以包括该初始的静态变量的变量起始地址,以及变量数据长度。基于初始的静态变量的变量起始地址,以及变量数据长度,生成静态变量的变量信息表,并将该变量信息表保存至固件中,获得目标静态变量,在开机运行时将目标静态变量加载到内存中。
在获得目标静态变量后,当对目标静态变量的内存进行操作时,将目标操作对应的内存地址输入静态变量检测模块,基于安全函数执行静态变量检测。同样的,该安全函数是通过对原有的内存操作应用程序接口函数进行改写,通过编译链接对原有的内存操作应用程序接口进行重定向得到的。
在静态变量检测的过程中,静态变量检测模块根据目标操作对应的内存地址,查找与该内存地址对应的节点,若查找到节点,则对目标操作对应的内存地址的操作范围进行检测,即,检测其是否与目标静态变量的内存相匹配,若匹配,则可以执行正常处理流程,即可以正常执行该目标操作;若不匹配,则证明该目标操作为错误操作,需要执行异常处理流程,暂不执行该目标操作。
静态变量检测模块根据目标操作对应的内存地址,若未查找到与该目标操作对应的内存地址对应的节点,则无需对目标操作对应的内存地址的操作范围进行检测,直接执行正常处理流程即可。
如图4所示,该图为本申请实施例提供的一种内存操作处理的应用场景示意图。内存操作处理方法可以由内存错误检测装置执行,其中内存错误检测装置包括静态变量检测模块和堆变量检测模块。在进行内存操作处理前,针对初始的堆变量和初始的静态变量分别进行预处理,获得目标堆变量和目标静态变量。
将目标操作对应的内存地址输入静态变量检测模块,基于安全函数执行静态变量检测。在静态变量检测的过程中,静态变量检测模块根据目标操作对应的内存地址,查找对应的节点,若查找到节点,则对目标操作对应的内存地址的操作范围进行检测,即,检测其是否与目标静态变量的内存相匹配,若相匹配,则进一步将该目标操作对应的内存地址输入堆变量检测模块,进行堆变量检测;若不匹配,则证明该操作存在错误,需要执行异常处理流程,暂不执行该目标操作,以避免发生内存错误。
静态变量检测模块根据目标操作对应的内存地址,若未查找到内存块,则无需对目标操作对应的内存地址的操作范围进行检测,直接继续将该目标操作对应的内存地址输入堆变量检测模块,进行堆变量检测。
具体的,堆变量检测模块根据目标操作对应的内存地址,查找与该目标操作对应的内存地址对应的内存块,若查找到内存块,则对目标操作对应的内存地址的操作范围进行检测,即,检测其是否与目标堆变量的内存相匹配,若匹配,可以执行正常处理流程,即可以正常执行该目标操作;若不匹配,则证明该目标操作存在错误,需要执行异常处理流程,暂不执行该目标操作,以避免发生内存错误。
堆变量检测模块根据目标操作对应的内存地址,若未查找到内存块,则无需对目标操作对应的内存地址的操作范围进行检测,直接执行正常处理流程即可。
需要说明的是,本申请中对进行静态变量检测和进行堆变量检测的执行顺序不做具体限定,示例性的,上述对先进行静态变量检测,后进行堆变量检测的应用场景进行了描述,同样的可以先进行堆变量检测,后进行静态变量检测,在此不再赘述。
综上,本申请中采用安全函数替换原有的应用程序接口函数,基于目标变量对应的内存地址操作范围,对目标操作对应的内存地址的操作范围进行检测,以发现错误的操作并将其拦截,避免内存错误的发生。其过程摆脱了对编译器的依赖,极大程度的减小了资源开销,在提高了嵌入式软件运行安全性的同时,提高了系统运行效率。
下面结合上述应用场景,对本申请实施例进行介绍。本申请中针对初始变量的类型,对初始变量进行了预处理,获得目标变量。其中初始变量的类型包括初始的堆变量和初始的静态变量,对初始的堆变量和初始的静态变量分别进行预处理,可以获得目标堆变量和目标静态变量。同时改写内存操作应用程序接口函数的方式,采用安全函数替换原有的应用程序接口函数。通过针对目标操作,获取目标操作对应的内存地址的操作范围,目标操作用于在内存中存储数据,基于安全函数,检测目标操作对应的内存地址的操作范围是否与目标变量的内存匹配,目标变量用于指示在内存中存储数据的数据量标准;当目标操作对应的内存地址的操作范围与目标变量的内存匹配时,执行目标操作,当目标操作对应的内存地址的操作范围与目标变量的内存不匹配时,对目标操作进行拦截,由此避免因执行错误的目标操作而导致内存错误的发生。其过程摆脱了对编译器的依赖,可以极大程度的减小了资源开销,在提高了嵌入式软件运行安全性的同时,提高了系统运行效率。
如图5所示,该图为本申请实施例提供的一种堆变量的内存操作处理方法的流程图,对应于上述图1所示的应用场景。
本申请实施例中针对目标操作,获取目标操作对应的内存地址的操作范围,对目标操作对应的内存地址,执行堆变量检测。具体地,本申请实施例中改写内存操作应用程序接口,将底层替换成安全函数。通过编译链接重定向应用程序接口,将原有的应用程序接口函数替换成安全函数。基于安全函数对目标操作对应的内存地址,执行堆变量检测。
其中,在C标准库的一些函数在使用过程中,会存在数组内存越界等安全问题,这些原生的有隐患函数称为非安全函数。与不安全函数对应的函数则为安全函数,安全函数和非安全函数之间的区别在于,为了防止堆栈溢出,安全函数多了一个确定缓冲区(buff)长度的参数。
具体地,针对目标操作,获取目标操作对应的内存地址的操作范围,其中目标操作用于在内存中存储数据。在获取目标操作对应的内存地址的操作范围之后,根据目标操作对应的内存地址,查找与该目标操作对应的内存地址对应的内存块。若查找到对应的内存块,则对目标操作对应的内存地址的操作范围进行检测。
如图6所示,该图为本申请实施例提供的一种额外申请字节长度的示意图,本申请实施例中,在申请堆变量的内存时,在初始的堆变量的节点前额外申请预设字节长度的信息,获得目标堆变量,增加长度后的堆变量即为目标堆变量。示例性的,初始的堆变量的字节长度为n字节(n为正整数),在额外申请m字节(m为正整数)的字节长度的情况下,目标堆变量的字节长度为(n+m)字节。由此在对目标操作对应的内存地址操作范围进行检测时,通过检测目标操作对应的内存地址操作范围是否与目标堆变量的字节长度对应,即检测目标操作对应的内存地址的操作范围是否与(n+m)字节相对应,来判断该操作是否正确。若目标操作对应的内存地址的操作范围与目标堆变量的字节长度对应,则反馈操作正常;若目标操作对应的内存地址的操作范围与目标堆变量的字节长度不对应则反馈操作异常。
在一种可能的实现方式中,在根据目标操作对应的内存地址,查找内存块时,可能未查找到对应的内存块,则无需对目标操作对应的内存地址的操作范围进行检测,直接反馈操作正常,以执行正常处理流程。
当目标操作对应的内存地址的操作范围与目标堆变量的字节长度对应,反馈操作正常时,可以执行正常处理流程,即正常执行该目标操作;当目标操作对应的内存地址的操作范围与目标堆变量的字节长度不对应,反馈操作异常时,需要对该目标操作进行拦截,以避免错误的目标操作导致内存错误的发生。
如图7所示,该图为本申请实施例提供的一种静态变量的内存操作处理方法的流程图,对应于上述图3所示的应用场景。
对目标操作对应的内存地址,执行静态变量检测。同样的,本申请实施例中改写内存操作应用程序接口,将底层替换成安全函数。通过编译链接重定向应用程序接口,将原有的应用程序接口函数替换成安全函数。具体的,可以基于安全函数,对目标操作对应的内存地址执行静态变量检测。基于安全函数,查找与目标操作对应的内存地址相对应的节点。若查找到对应的节点,则对内存地址的操作范围进行检测。
如图8所示,该图为本申请实施例提供的一种生成静态变量信息表的示意图,本申请实施例中针对静态变量,从可执行可关联的文件格式文件中提取初始的静态变量的目标信息,生成目标静态变量,在开机运行时将目标静态变量加载到内存中。
具体地,从初始的静态变量的信息中提取初始的静态变量的变量起始地址,以及初始的静态变量的变量数据长度。基于初始的静态变量的变量起始地址,以及初始的静态变量的变量数据长度,生成静态变量的变量信息表,并将该变量信息表保存至固件中,获得目标静态变量,在开机运行时将目标静态变量加载到内存中。初始的静态变量的变量起始地址,用于后续基于目标操作对应的内存地址查找目标静态变量的内存;初始的静态变量的变量数据长度,用于后续检测目标操作对应的内存地址的操作范围。
其中,初始的静态变量的信息中,即初始的静态变量对应的符号表中可以包括静态变量的名称(VarName),静态变量的类型(VarName),静态变量的变量起始地址(VarAddr),以及静态变量的变量数据长度(VarLen)等,同时,初始的静态变量的信息中还包括分别与静态变量的名称,静态变量的类型,静态变量的起始地址,以及静态变量的数据长度等对应的数据类型,例如静态变量的名称对应的数据类型为字符串(string),静态变量的类型对应的数据类型为字符串,静态变量的起始地址对应的数据类型为HEX文件,以及静态变量的数据长度对应的数据类型为HEX文件。
基于静态变量的名称,静态变量的类型,静态变量的变量起始地址,以及静态变量的变量数据长度等静态变量的信息,可以通过编译成链接符号列表(map)文件,从中抽取初始的静态变量的目标信息,生成静态变量的变量信息表。示例性的,目标信息可以为静态变量的起始地址和静态变量的数据长度。
在生成静态变量的变量信息表后,通过空中下载技术(Over-the-AirTechnology,OTA)升级,将该静态变量的变量信息表保存至固件(Firmware)中,获得目标静态变量。其中,当固件中保存了多个静态变量的变量信息表的情况下,可以根据多个静态变量的变量信息表中静态变量的变量起始地址,按照变量起始地址递增的方式,对目标静态变量进行排序,以便于后续在执行静态变量检测时,可以基于二分查找法查找目标静态变量。
其中,二分查找,也称折半查找(Binary Search),它是一种效率较高的查找方法。其要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。进而本申请中,可以根据多个静态变量的变量信息表中静态变量的变量起始地址,按照变量起始地址递增的方式,对目标静态变量进行排序,以便于后续进行二分查找。
在对目标操作对应的内存地址的操作范围进行检测的过程中,检测目标操作对应的内存地址的操作范围是否与目标静态变量的内存相匹配,若匹配,则证明该操作为正常操作,可以执行正常处理流程,即可以正常执行该目标操作;若不匹配,则证明该操作为异常操作,需要执行异常处理流程,即暂不执行该目标操作,以免执行异常操作而导致内存错误的产生,影响系统的正常运行。
如图9所示,该图为本申请实施例提供的一种内存操作处理方法的流程图,对应于上述图4所示的应用场景。与上述实施例不同的是,本申请实施例中,可以同时对目标操作对应的内存地址执行堆变量检测和静态变量检测。
在进行内存操作处理前,即在获取目标操作对应的内存地址之前,针对初始的堆变量和初始的静态变量分别进行预处理,获得目标堆变量和目标静态变量。
对目标操作对应的内存地址进行静态变量检测,即基于安全函数,对目标操作对应的内存地址执行静态变量检测。在静态变量检测的过程中,基于安全函数,查找与目标操作对应的内存地址相对应的节点,若查找到节点,则对目标操作对应的内存地址的操作范围进行检测,即,检测其是否与目标静态变量的内存相匹配,若匹配,则进一步对该目标操作对应的内存地址进行堆变量检测;若不匹配,则证明该操作为异常操作,需要执行异常处理流程,即暂不执行该目标操作。由此通过检测异常操作,以避免由此执行异常操作而导致内存错误的产生,可以有效提高系统的稳定性,保障内存安全。
在一种可能的实现方式中,根据目标操作对应的内存地址,若未查找到对应的节点,则无需对目标操作对应的内存地址的操作范围进行检测,直接继续对该目标操作对应的内存地址进行堆变量检测。
具体的,基于安全函数,查找与目标操作对应的内存地址匹配的内存块,若查找到内存块,则对目标操作对应的内存地址的操作范围进行检测,即,检测其是否与目标堆变量的内存匹配,若相匹配,则证明该操作为正常操作,可以执行正常处理流程,即可以正常执行该目标操作;若不匹配,则证明该操作为异常操作,需要执行异常处理流程,暂不执行该目标操作。
在一种可能的实现方式中,基于安全函数,未查找到与该目标操作对应的内存地址匹配的内存块,则无需对目标操作对应的内存地址的操作范围进行检测,直接执行正常处理流程即可。
需要说明的是,本申请中对静态变量检测和堆变量检测的执行顺序不做具体限定,示例性的,上述对先进行静态变量检测,后进行堆变量检测的内存操作处理方法进行了描述,同样的可以先进行堆变量检测,后进行静态变量检测,在此不再赘述。
综上,本申请提供一种内存操作处理方法,基于安全函数,对目标操作对应的内存地址,执行变量检测,当检测出操作异常时,对该异常操作进行拦截,以避免由此执行异常操作而导致内存错误的产生,保障系统的稳定运行。由于本申请中针对初始变量的类型,对初始变量进行了预处理,可以获得目标变量。其中初始变量的类型包括初始的堆变量和初始的静态变量,对初始的堆变量和初始的静态变量分别进行预处理,可以获得目标堆变量和目标静态变量。同时,本申请可在上层代码无感知的情况下部署,部署方法是替换掉原有的内存操作应用程序接口,即通过改写内存操作应用程序接口函数的方式,采用安全函数替换原有的应用程序接口函数,通过对目标操作对应的内存地址进行检测,以执行正常的目标操作,拦截异常的目标操作。其过程位于编译器和运行库之间,摆脱了对编译器的依赖,极大程度的减小了资源开销,提高了系统运行效率。
在一些实施例中,电子设备可以是手机、平板电脑、桌面型、膝上型、笔记本电脑、超级移动个人计算机(Ultra-mobile Personal Computer,UMPC)、手持计算机、上网本、个人数字助理(Personal Digital Assistant,PDA)、可穿戴电子设备、智能手表等设备,本申请对上述电子设备的具体形式不做特殊限制。在本实施例中,电子设备的结构可以如图10所示,图10为本申请实施例提供的一种电子设备的结构示意图。
如图10所示,电子设备可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,马达170,指示器171,以及显示屏172等。
可以理解的是,本实施例示意的结构并不构成对电子设备的具体限定。在另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。例如,在本申请中,处理器可以针对目标操作,获取目标操作对应的内存地址的操作范围,目标操作用于在内存中存储数据;基于安全函数,检测目标操作对应的内存地址的操作范围是否与目标变量的内存匹配,目标变量用于指示在内存中存储数据的数据量标准;当目标操作对应的内存地址的操作范围与目标变量的内存匹配时,执行目标操作,当目标操作对应的内存地址的操作范围与目标变量的内存不匹配时,对目标操作进行拦截。
其中,控制器可以是电子设备的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头172等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与显示屏172,无线通信模块160等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备充电,也可以用于电子设备与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备的结构限定。在本申请另一些实施例中,电子设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏172,摄像头172,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏172显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global systemfor mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidou navigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备通过GPU,显示屏172,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏172和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏172用于显示图像,视频等。显示屏172包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oled,量子点发光二极管(quantumdot lightemitting diodes,QLED)等。在一些实施例中,电子设备可以包括1个或N个显示屏172,N为大于1的正整数。
电子设备的显示屏172上可以显示一系列图形用户界面(graphical userinterface,GUI),这些GUI都是该电子设备的主屏幕。一般来说,电子设备的显示屏172的尺寸是固定的,只能在该电子设备的显示屏172中显示有限的控件。控件是一种GUI元素,它是一种软件组件,包含在应用程序中,控制着该应用程序处理的所有数据以及关于这些数据的交互操作,用户可以通过直接操作(direct manipulation)来与控件交互,从而对应用程序的有关信息进行读取或者编辑。一般而言,控件可以包括图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备的各种功能应用以及数据处理。
马达170可以产生振动提示。马达170可以用于操作异常提示,也可以用于触摸振动反馈。作用于显示屏172不同区域的触摸操作,马达170也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器171可以是指示灯,可以用于指示操作异常,操作正常,也可以用于指示变量检测完成等。
另外,在上述部件之上,运行有操作系统。例如苹果公司所开发的iOS操作系统,谷歌公司所开发的Android开源操作系统,微软公司所开发的Windows操作系统等。在该操作系统上可以安装运行应用程序。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种内存操作的处理方法,其特征在于,包括:
针对目标操作,获取所述目标操作对应的内存地址的操作范围,所述目标操作用于在内存中存储数据;
基于安全函数,检测所述目标操作对应的内存地址的操作范围是否与目标变量的内存匹配,所述目标变量用于指示在内存中存储数据的数据量标准;
当所述目标操作对应的内存地址的操作范围与所述目标变量的内存匹配时,执行所述目标操作,当所述目标操作对应的内存地址的操作范围与所述目标变量的内存不匹配时,对所述目标操作进行拦截。
2.根据权利要求1所述的方法,其特征在于,所述目标变量为目标堆变量,所述基于安全函数,检测所述目标操作对应的内存地址的操作范围是否与目标变量的内存匹配,包括:
基于所述安全函数,查找与所述目标操作对应的内存地址匹配的内存块;
当查找到所述内存块时,检测所述目标操作对应的内存地址的操作范围是否与所述目标堆变量的字节长度匹配。
3.根据权利要求1所述的方法,其特征在于,所述目标变量为目标静态变量,所述基于安全函数,检测所述目标操作对应的内存地址的操作范围是否与目标变量的内存匹配,包括:
基于所述安全函数,查找与所述目标操作对应的内存地址匹配的节点;
当查找到所述节点时,检测所述目标操作对应的内存地址的操作范围是否与所述目标静态变量的内存匹配。
4.根据权利要求1所述的方法,其特征在于,所述目标变量为目标堆变量和目标静态变量,所述基于安全函数,检测所述目标操作对应的内存地址的操作范围是否与目标变量的内存匹配,包括:
基于所述安全函数,查找与所述目标操作对应的内存地址匹配的节点;
当查找到所述节点时,检测所述目标操作对应的内存地址的操作范围是否与所述目标静态变量的内存匹配;
当所述目标操作对应的内存地址的操作范围与所述目标静态变量的内存匹配时,基于所述安全函数,查找与所述目标操作对应的内存地址匹配的内存块;
当查找到所述内存块时,检测所述目标操作对应的内存地址的操作范围是否与所述目标堆变量的字节长度匹配。
5.根据权利要求4所述的方法,其特征在于,还包括:
当未查找到所述节点时,基于所述安全函数,查找与所述目标操作对应的内存地址匹配的内存块;
当查找到所述内存块时,检测所述目标操作对应的内存地址的操作范围是否与所述目标堆变量的字节长度匹配。
6.根据权利要求1所述的方法,其特征在于,所述获取所述目标操作对应的内存地址的操作范围之前,还包括:
对初始的变量进行预处理,获得所述目标变量。
7.根据权利要求6所述的方法,其特征在于,所述目标变量为目标堆变量,所述对初始的变量进行预处理,获得所述目标变量,包括:
在申请初始的堆变量的内存时,在所述初始的堆变量的节点处增加预设长度的节点信息,获得所述目标堆变量。
8.根据权利要求7所述的方法,其特征在于,所述目标变量为目标静态变量,所述对初始的变量进行预处理,获得所述目标变量,包括:
从初始的静态变量的信息中提取目标信息,获得静态变量的变量信息表,所述目标信息包括所述初始的静态变量的变量起始地址和所述初始的静态变量的变量数据长度;
将所述静态变量的变量信息表,存储至固件中,获得所述目标静态变量。
9.一种电子设备,其特征在于,所述电子设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行如权利要求1-8任一项所述的一种内存操作的处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-8任一项所述的一种内存操作的处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310854824.4A CN117093472B (zh) | 2023-07-12 | 2023-07-12 | 一种内存操作的处理方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310854824.4A CN117093472B (zh) | 2023-07-12 | 2023-07-12 | 一种内存操作的处理方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117093472A true CN117093472A (zh) | 2023-11-21 |
CN117093472B CN117093472B (zh) | 2024-08-02 |
Family
ID=88778813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310854824.4A Active CN117093472B (zh) | 2023-07-12 | 2023-07-12 | 一种内存操作的处理方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117093472B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140317129A1 (en) * | 2011-09-02 | 2014-10-23 | Markus T. Metzger | Data race analysis with improved detection filtering |
CN104461880A (zh) * | 2014-12-04 | 2015-03-25 | 福建星网视易信息系统有限公司 | 一种嵌入式系统中自动检测内存越界的方法及系统 |
CN106055478A (zh) * | 2016-05-31 | 2016-10-26 | 腾讯科技(深圳)有限公司 | 检测内存泄漏的方法和装置 |
CN106295340A (zh) * | 2016-08-03 | 2017-01-04 | 武汉斗鱼网络科技有限公司 | 一种程序文件恢复系统及方法 |
CN108388517A (zh) * | 2018-03-14 | 2018-08-10 | 深圳怡化电脑股份有限公司 | 一种内存检测方法、装置、设备及存储介质 |
CN111124921A (zh) * | 2019-12-25 | 2020-05-08 | 北京字节跳动网络技术有限公司 | 内存越界的检测方法、装置、设备和存储介质 |
CN115576818A (zh) * | 2022-10-14 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种内存越界检测方法、装置及电子设备和存储介质 |
-
2023
- 2023-07-12 CN CN202310854824.4A patent/CN117093472B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140317129A1 (en) * | 2011-09-02 | 2014-10-23 | Markus T. Metzger | Data race analysis with improved detection filtering |
CN104461880A (zh) * | 2014-12-04 | 2015-03-25 | 福建星网视易信息系统有限公司 | 一种嵌入式系统中自动检测内存越界的方法及系统 |
CN106055478A (zh) * | 2016-05-31 | 2016-10-26 | 腾讯科技(深圳)有限公司 | 检测内存泄漏的方法和装置 |
CN106295340A (zh) * | 2016-08-03 | 2017-01-04 | 武汉斗鱼网络科技有限公司 | 一种程序文件恢复系统及方法 |
CN108388517A (zh) * | 2018-03-14 | 2018-08-10 | 深圳怡化电脑股份有限公司 | 一种内存检测方法、装置、设备及存储介质 |
CN111124921A (zh) * | 2019-12-25 | 2020-05-08 | 北京字节跳动网络技术有限公司 | 内存越界的检测方法、装置、设备和存储介质 |
CN115576818A (zh) * | 2022-10-14 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种内存越界检测方法、装置及电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117093472B (zh) | 2024-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021027630A1 (zh) | 补丁方法、相关装置及系统 | |
US20170269725A1 (en) | Electronic device for touch and finger scan sensor input and control method thereof | |
US10146557B2 (en) | Method and electronic device for initializing memory and updating firmware | |
CN110226163B (zh) | 电子装置及使用其控制与显示器连接的生物传感器的方法 | |
CN105809028B (zh) | 在移动设备中运行相同应用的多个实例的装置和方法 | |
CN113900699B (zh) | 一种系统升级方法和电子设备 | |
US10242170B2 (en) | Method and apparatus for obtaining sensing data | |
KR102137686B1 (ko) | 컨텐츠 무결성 제어 방법 및 그 전자 장치 | |
US10237087B2 (en) | Method for controlling transmission speed and electronic device thereof | |
WO2018048225A1 (ko) | 결제 서비스를 제공하는 전자 장치 및 방법 | |
KR102241831B1 (ko) | 전자 장치 및 이의 운영 방법 | |
US10057751B2 (en) | Electronic device and method for updating accessory information | |
CN114443083B (zh) | 系统升级方法、装置、电子设备及存储介质 | |
KR20160016405A (ko) | 데이터 처리 방법 및 그 전자 장치 | |
CN117093472B (zh) | 一种内存操作的处理方法、设备及存储介质 | |
CN116382791B (zh) | 一种配置文件的保护方法及电子设备 | |
CN116700768B (zh) | 一种应用的处理方法及相关装置 | |
KR102188685B1 (ko) | 애플리케이션 패키지를 생성하는 장치 및 방법 | |
CN114443109B (zh) | 补丁修复方法、电子设备及存储介质 | |
US10108242B2 (en) | Method of controlling power supply in submersion and electronic device thereof | |
US9928090B2 (en) | Method for processing dynamic language and electronic device using the same | |
CN117707453B (zh) | 一种节点信息的读取方法、设备及存储介质 | |
CN117312055B (zh) | 数据备份的方法及相关装置 | |
CN113485923B (zh) | 项目代码检测方法与装置、电子设备 | |
CN116680208B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |