CN110674050B - 内存越界检测方法、装置、电子设备及计算机存储介质 - Google Patents

内存越界检测方法、装置、电子设备及计算机存储介质 Download PDF

Info

Publication number
CN110674050B
CN110674050B CN201910950733.4A CN201910950733A CN110674050B CN 110674050 B CN110674050 B CN 110674050B CN 201910950733 A CN201910950733 A CN 201910950733A CN 110674050 B CN110674050 B CN 110674050B
Authority
CN
China
Prior art keywords
memory
space
detected
memory space
identification
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
Application number
CN201910950733.4A
Other languages
English (en)
Other versions
CN110674050A (zh
Inventor
仇斌
黄民发
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910950733.4A priority Critical patent/CN110674050B/zh
Publication of CN110674050A publication Critical patent/CN110674050A/zh
Application granted granted Critical
Publication of CN110674050B publication Critical patent/CN110674050B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种内存越界检测方法、装置、电子设备及计算机存储介质,该方法用于待检测内存空间的内存越界检测,每个待检测内存空间中存储有只读区域标识;该方法包括:在至少一个待检测内存空间满足检测条件时,基于满足检测条件的待检测内存空间的空间标识,调用内存越界检测函数,由内存越界检测函数根据空间标识,检测空间标识所对应的目标内存空间的只读区域标识的标识状态;根据只读区域标识的标识状态,确定目标内存空间是否发生内存越界。通过该方案,基于各个待检测内存空间存储的只读区域标识,调用的内存越界检测函数基于空间标识对目标内存空间的只读区域标识进行检测,即可实现内存越界检测,该方法实现简单,适用性强。

Description

内存越界检测方法、装置、电子设备及计算机存储介质
技术领域
本发明涉及计算机处理技术领域,具体而言,本发明涉及一种视内存越界检测方法、装置、电子设备及计算机存储介质。
背景技术
现有技术中,进行内存越界检测的方法主要为:第一种方式,依据第三方开发的检测工具进行检测。第二种方式,对需要检测的内存空间进行分页处理,通过调整该内存空间的分配位置,使其结尾段恰好与***分页边界对齐,然后在边界处再多分配一个不可访问页作为保护区域。这样,一旦出现内存越界时,进程就会不正常工作,帮助用户检测内存越界。
上述的两种方式中,第一种方式需要依赖于第三方的内存越界检测工具,使得该方案具有局限性。第二种方式在每次进行内存越界检测时,需要对每个需要检测的内存空间进行分页处理,即对内存空间的改动比较大,使得该方法较为复杂,适用性较差。
发明内容
本发明的目的旨在至少能解决上述的技术缺陷之一,简化内存越界检测的复杂性,提高方法的适用性。本发明采用的技术方案如下:
第一方面,本发明提供了一种内存越界检测方法,该方法用于待检测内存空间的内存越界检测,其中,每个待检测内存空间中存储有只读区域标识;该方法包括:
在至少一个待检测内存空间满足检测条件时,基于满足检测条件的待检测内存空间的空间标识,调用内存越界检测函数;
由内存越界检测函数根据空间标识,检测空间标识所对应的目标内存空间的只读区域标识的标识状态;
根据只读区域标识的标识状态,确定目标内存空间是否发生内存越界。
本发明第一方面的实施例中,空间标识为内存地址。
本发明第一方面的实施例中,该方法还包括:
构建所有待检测内存空间的基类,基类的成员变量包括对应于各待检测内存空间的成员变量,只读标识存储在待检测内存空间的指定成员变量对应的内存区域中;
构建内存越界检测函数,其中,内存越界检测函数继承基类。
本发明第一方面的实施例中,该方法还包括:
在存在新的内存空间需要进行内存越界检测时,将新的内存空间的成员变量添加在基类中。
本发明第一方面的实施例中,指定成员变量为第一个成员变量;
检测空间标识所对应的目标内存空间的只读区域标识的标识状态,包括:
检测空间标识所对应的目标内存空间中第一个成员变量对应的内存区域中的只读区域标识的标识状态。
本发明第一方面的实施例中,该方法还包括:
将待检测内存空间的空间标识存储至指定存储位置。
本发明第一方面的实施例中,在待检测内存空间发生内存越界时,该方法还包括:
基于发生内存越界的内存空间的空间标识,生成内存越界提醒信息,将内存越界提醒信息提供给用户。
本发明第一方面的实施例中,该方法还包括:
将待检测内存空间的空间相关信息与空间标识关联存储至指定存储位置;
基于发生内存越界的内存空间的空间标识,生成内存越界提醒信息,包括:
基于发生内存越界的内存空间的空间标识,从指定存储位置获取发生内存越界的内存空间的空间相关信息;
基于发生内存越界的内存空间的空间标识以及对应的空间相关信息,生成内存越界提醒信息。
本发明第一方面的实施例中,只读区域标识为设定的字符串,标识状态包括发生变化和未发生变化;
根据只读区域标识的标识状态,确定目标内存空间是否发生内存越界,包括:
若字符串发生变化,目标内存空间发生内存越界;
若字符串未发生变化,目标内存空间未发生内存越界。
本发明第一方面的实施例中,字符串为魔鬼数字。
本发明第一方面的实施例中,待检测内存空间为只读空间。
第二方面,本发明提供了一种内存越界检测装置,该装置用于待检测内存空间的内存越界检测,其中,每个待检测内存空间中存储有只读区域标识;该装置包括:
目标内存空间确定模块,用于在至少一个待检测内存空间满足检测条件时,基于满足检测条件的待检测内存空间的空间标识,调用内存越界检测函数,
标识状态检测模块,用于由内存越界检测函数根据空间标识,检测空间标识所对应的目标内存空间的只读区域标识的标识状态;
内存越界检测模块,用于根据只读区域标识的标识状态,确定目标内存空间是否发生内存越界。
本发明第二方面的实施例中,空间标识为内存地址。
本发明第二方面的实施例中,该装置还包括:
基类和检测函数构建模块,用于构建所有待检测内存空间的基类,基类的成员变量包括对应于各待检测内存空间的成员变量,只读标识存储在待检测内存空间的指定成员变量对应的内存区域中;构建内存越界检测函数,其中,内存越界检测函数继承基类。
本发明第二方面的实施例中,该装置还包括:
成员变量添加模块,用于在存在新的内存空间需要进行内存越界检测时,将新的内存空间的成员变量添加在基类中。
本发明第二方面的实施例中,指定成员变量为第一个成员变量;
标识状态检测模块在检测空间标识所对应的目标内存空间的只读区域标识的标识状态时,具体用于:
检测空间标识所对应的目标内存空间中第一个成员变量对应的内存区域中的只读区域标识的标识状态。
本发明第二方面的实施例中,该装置还包括:
存储模块,用于将待检测内存空间的空间标识存储至指定存储位置。
本发明第二方面的实施例中,该装置还包括:
内存越界提醒信息生成模块,用于在待检测内存空间发生内存越界时,基于发生内存越界的内存空间的空间标识,生成内存越界提醒信息,将内存越界提醒信息提供给用户。
本发明第二方面的实施例中,存储模块还用于将待检测内存空间的空间相关信息与空间标识关联存储至指定存储位置;
内存越界提醒信息生成模块在基于发生内存越界的内存空间的空间标识,生成内存越界提醒信息时,具体用于:
基于发生内存越界的内存空间的空间标识,从指定存储位置获取发生内存越界的内存空间的空间相关信息;
基于发生内存越界的内存空间的空间标识以及对应的空间相关信息,生成内存越界提醒信息。
本发明第二方面的实施例中,只读区域标识为设定的字符串,标识状态包括发生变化和未发生变化;
内存越界检测模块在根据只读区域标识的标识状态,确定目标内存空间是否发生内存越界时,具体用于:
若字符串发生变化,目标内存空间发生内存越界;
若字符串未发生变化,目标内存空间未发生内存越界。
本发明第二方面的实施例中,字符串为魔鬼数字。
本发明第二方面的实施例中,待检测内存空间为只读空间。
第三方面,本发明提供了一种电子设备,该电子设备包括:
处理器和存储器;
存储器,用于存储计算机操作指令;
处理器,用于通过调用计算机操作指令,执行如本发明的第一方面的任一实施例中所示的方法。
第四方面,本发明提供了一种计算机可读存储介质,该存储介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如本发明的第一方面的任一实施例中所示的方法。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例的内存越界检测方法、装置、电子设备及计算机存储介质,在至少一个待检测内存空间满足检测条件时,基于满足检测条件的待检测内存空间的空间标识,可以调用内存越界检测函数,该内存越界检测函数可以基于该空间标识,检测该空间标识对应的目标内存空间中的只读区域标识的标识状态,用该标识状态来确定该目标内存空间是否发生内存越界,在本方案中,由于各个待检测内存空间中都存储有只读区域标识,因此,在待检测内存空间需要进行检测时,调用的内存越界检测函数基于待检测内存空间的空间标识,对该空间标识对应的目标内存空间的只读区域标识进行检测,即可实现对待检测内存空间的检测,不需要其他额外的设置,该方法实现简单,适用性强。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍。
图1示出了本发明的实施例提供的一种内存越界检测方法的流程示意图;
图2示出了本发明的实施例提供的一示例中一种内存越界检测方法的流程示意图;
图3示出了本发明的实施例提供的又一示例中一种内存越界检测方法的流程示意图;
图4发明的实施例提供的一示例中基于游戏场景的内存越界检测方法的流程示意图;
图5本发明的实施例提供的一种内存越界检测装置的结构示意图;
图6本发明的实施例提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本发明的实施例,该实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明的技术方案,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在该特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为了更好的理解本发明实施例所提供的方案,下面首先对内存越界的相关技术进行简单介绍。
内存越界是软件***主要错误之一,其后果往往不可预料且非常严重。更麻烦的是,它出现的时机是随机的,表现出来的症状是随机的,而且造成的后果也是随机的,这会使程序员很难找出这些Bug的现象和本质之间的联系,从而给Bug的定位带来极大的困难。一般情况下,内存越界访问可分如下两种:
读越界:即读了不属于自己的数据。如果所读的内存地址是无效的,程序会立刻崩溃;如果所读内存地址是有效的,在读的时候不会马上出现问题,但由于读到的数据是随机的,因此它会造成不可预料的后果。
写越界:又称为缓冲区溢出,所写入的数据对别的程序来说是随机的,它也会造成不可预料的后果。
现有技术中,进行内存越界检测的方法主要有以下几种方式:
第一种方式:依据第三方开发的检测工具进行检测,比如,采用AddressSanitizer工具进行内存越界的检测。
第二种方式:基于内存分页的内存越界校验方案,该方案大致流程为:对需要检测的内存空间进行分页处理,通过调整该内存空间的分配位置,使其结尾段恰好与***分页边界对齐,然后在边界处再多分配一个不可访问页作为保护区域。这样,一旦出现内存越界时,进程就不能够正常工作,帮助用户及时检测内存越界。
第三种方式:判断类结构中的魔鬼数字是否改变,具体为:为内存空间构建类结构,在类结构中设置魔鬼数字,在需要对内存空间进行检测时,检测内存空间中的魔鬼数字是否发生变化即可。
虽然上述三种方式都能够实现内存越界的检测,但是本发明的发明人发现上述三种方式仍存在以下缺陷:
第一种方式:依赖于第三方的内存越界检测工具,在基于该检测工具进行内存检测时,需要在需要检测的内存空间对应的硬件设备上安装该检测工具对应的插件,影响***性能,使***消耗较大。
第二种方式:在需要进行内存越界检测时,需要对每个需要检测的内存空间进行分页处理,即对内存空间的改动比较大,使得该方法较为复杂。
第三种方式:在对需要检测的内存空间进行检测时,每注册一个内存空间,都需要手写新一段针对该内存空间的代码,手写代码成本较大,且容易出错。
为了解决现有内存检测方案中所存在的至少一个技术缺陷,本发明实施例提供了一种新的内存越界检测方案。下面以具体地实施例对本发明的技术方案以及本发明的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
图1中示出了本发明实施例所提供的内存越界检测方法的流程示意图,该方法用于待检测内存空间的内存越界检测,其中,每个待检测内存空间中存储有只读区域标识,如图1所示,该方法可以包括以下步骤:
步骤S110,在至少一个待检测内存空间满足检测条件时,基于满足检测条件的待检测内存空间的空间标识,调用内存越界检测函数。
其中,检测条件指的是是否检测待检测内存空间的时机,即什么时候要对待检测内存空间进行内存越界检测,该检测条件可以基于实际需求配置,比如,检测条件为每隔设定时间间隔,则每隔设定时间间隔,就对需要检测的待检测内存空间进行一次检测,检测其是否发生内存越界。
需要说明的是,在实际应用中,对于各个待检测内存空间,不同的待检测内存空间所对应的检测条件可以相同,也可以不同。
步骤S120,由内存越界检测函数根据空间标识,检测空间标识所对应的目标内存空间的只读区域标识的标识状态。
具体的,每个待检测内存空间都有对应的空间标识,该标识可以是内存空间的实际内存地址,也可以是一个编号,每个内存地址对应唯一一个内存空间,通过空间标识可以匹配到相对应的内存空间。
内存越界检测函数是用于检测各待检测内存空间是否发生内存越界的函数,对于满足检测条件的各内存空间,均可通过调用该内存越界检测函数进行内存越界检测。也就是说,所有的待检测内存空间对应同一个内存越界检测函数。在需要对满足检测条件的待检测内存空间进行内存越界检测时,则可以通过调用该内存越界检测函数,由该函数基于该内存空间的空间标识对该内存空间进行内存越界检测。
本发明的该方法中,每个待检测内存空间中都分别存储有只读区域标识,该只读区域标识可以是与该内存空间中存储的数据无关、且对该内存空间所存储的数据的读写没有影响的数据。对于一个待检测内存空间而言,该内存空间的只读区域标识的标识是否发生表征了该内存空间中的数据是否发生了变化,即该内存空间是否发生了写越界。
可以理解的是,如果同时有多个待检测内存空间满足检测条件,则可以同时对多个待检测内存空间进行内存越界检测。
步骤S130,根据只读区域标识的标识状态,确定目标内存空间是否发生内存越界。
本发明的实施例中的方案,在至少一个待检测内存空间满足检测条件时,基于满足检测条件的待检测内存空间的空间标识,可以调用内存越界检测函数,该内存越界检测函数可以基于该空间标识,检测该空间标识对应的目标内存空间中的只读区域标识的标识状态,用该标识状态来确定该目标内存空间是否发生内存越界,在本方案中,由于各个待检测内存空间中都存储有只读区域标识,因此,在待检测内存空间需要进行检测时,调用的内存越界检测函数基于待检测内存空间的空间标识,对该空间标识对应的目标内存空间的只读区域标识进行检测,即可实现对待检测内存空间的检测,不需要其他额外的设置,该方法实现简单,适用性强。
本发明的实施例中,该方法还可以包括:
构建所有待检测内存空间的基类,基类的成员变量包括对应于各待检测内存空间的成员变量,只读标识存储在待检测内存空间的指定成员变量对应的内存区域中;
构建内存越界检测函数,其中,内存越界检测函数继承基类。
具体的,内存越界检测函数继承自所有待检测内存空间所对应的基类,由于基类的成员变量包括对应于各个待检测内存空间的成员变量,则在基于内存越界检测函数检测待检测内存空间是否发生越界时,基于继承的特性,在需要内存越界检测时,内存越界检测函数则可以基于待检测内存空间的空间标识,对该空间标识所对应的待检测内存空间的指定成员变量所对应的内存区域中的只读空间标识进行检测,并基于检测结果确定出该待检测内存空间是否发生了内存越界。
本发明的方案中,该方法还可以包括:
在存在新的内存空间需要进行内存越界检测时,将新的内存空间的成员变量添加在基类中。
具体的,基于继承的特性,在有新的内存空间需要检测时,可将该新的内存空间的成员变量存储在基类中,则内存越界检测函数可基于基类中增加的新的成员变量,对该新的成员变量对应的内存空间(新的内存空间)进行内存越界检测,而不需要针对该新的内存空间重新编写内存越界检测函数,可见,本发明所提供的方案具有很强的可扩展性。
本发明的实施例中,指定成员变量为第一个成员变量;
步骤S120中,检测空间标识所对应的目标内存空间的只读区域标识的标识状态,可以包括:
检测空间标识所对应的目标内存空间中第一个成员变量对应的内存区域中的只读区域标识的标识状态。
具体的,待检测内存空间中各成员变量对应的内存区域是连续的,则如果待检测内存空间中一个成员变量对应的内存区域发生内存越界,则对应的待检测内存空间也即发生了内存越界,则为了减少数据处理量,可将待检测内存空间所存储的只读区域标识仅存储在第一个成员变量对应的内存区域中,在对该待检测内存空间进行内存越界检测时,可以只检测其中第一个成员变量在对应待检测内存空间中对应的内存区域是否发生内存越界,即通过检测目标内存空间中第一个成员变量对应的内存区域中的只读区域标识的标识状态,来确定该目标内存区域是否发生内存越界。
本发明的实施例中,只读区域标识为设定的字符串,标识状态包括发生变化和未发生变化;
根据只读区域标识的标识状态,确定目标内存空间是否发生内存越界,可以包括:
若字符串发生变化,目标内存空间发生内存越界;
若字符串未发生变化,目标内存空间未发生内存越界。
具体的,只读区域标识可以为设定的字符串,则基于该字符串的标识状态可以确定出目标内存空间是否发生内存越界。字符串发生变化指的是检测时所对应的字符串与预先存储在目标内存空间中的字符串不一致,比如,字符串的长度发生了变化,字符串未发生变化指的是检测时所对应的字符串与预先存储在目标内存空间中的字符串完全一致。
本发明的实施例中,字符串为魔鬼数字。
具体的,魔鬼数字在代码中是没有具体含义的数字、字符串等,不会影响待检测内存空间中存储的其他数据,在实际应用中,可将该魔鬼数字定义为名称有意义的常量,以便于理解。
本发明的实施例中,待检测内存空间为只读空间。
具体的,待检测内存空间为只读空间,则无论任何想往该待检测内存空间中写入数据的操作都会使该内存空间发生内存越界。
本发明的实施例中,该方法还可以包括:
将待检测内存空间的空间标识存储至指定存储位置。
具体的,为了便于对各个待检测内存空间进行管理,可以将各个待检测内存空间的空间标识存储在指定的存储位置,通过该指定存储位置对各个空间标识以及对应的待检测内存空间进行管理,则在有新的内存空间需要被检测时,可将该新的内存空间的空间标识也存储至该指定存储位置。
本发明的实施例中,在待检测内存空间发生内存越界时,该方法还可以包括:
基于发生内存越界的内存空间的空间标识,生成内存越界提醒信息,将内存越界提醒信息提供给用户。
具体的,如果通过内存越界检测函数所检测的待检测内存空间发生了内存越界,则可基于该发生内存越界的内存空间的空间标识,生成内存越界提醒信息,通过该内存越界提醒信息提醒用户发生了内存越界,避免发生更加严重的后果。
作为一个示例,如果发生内存越界的内存空间是目标内存空间,结合图2所示的一种内存越界检测方法,对本方案进行进一步的说明:
该方法用于待检测内存空间的内存越界检测,其中,每个待检测内存空间中存储有只读区域标识,如图2所示,该方法可以包括以下步骤:
步骤S210,在至少一个待检测内存空间满足检测条件时,基于满足检测条件的待检测内存空间的空间标识,调用内存越界检测函数。
步骤S220,由内存越界检测函数根据空间标识,检测空间标识所对应的目标内存空间的只读区域标识的标识状态。
步骤S230,根据只读区域标识的标识状态,确定目标内存空间是否发生内存越界。
步骤S240,在目标内存空间发生内存越界时,基于目标内存空间的空间标识,生成内存越界提醒信息,将内存越界提醒信息提供给用户。
其中,上述步骤S210至步骤S230与上述步骤S110至步骤S130的方案一致,在此不再赘述。则在目标内存空间发生内存越界时,基于该目标内存空间的空间标识生成内存越界提醒信息,通过该提醒信息提醒用户发生了内存越界,避免发生更加严重的后果。本发明的实施例中,该方法还可以包括:
将待检测内存空间的空间相关信息与空间标识关联存储至指定存储位置。
其中,空间相关信息指的是与该待检测内存空间相关的信息,通过该信息可以更加了解该待检测内存空间的具体情况,比如,具体是哪个内存空间,其中主要存储的是什么数据,在什么情况、什么时间发生的内存越界等。
基于发生内存越界的内存空间的空间标识,生成内存越界提醒信息,可以包括:
基于发生内存越界的内存空间的空间标识,从指定存储位置获取发生内存越界的内存空间的空间相关信息;
基于发生内存越界的内存空间的空间标识以及对应的空间相关信息,生成内存越界提醒信息。具体的,由于通过该空间相关信息可以更加了解该待检测内存空间的具体情况,则在待检测内存空间发生内存越界时,可基于发生内存越界的内存空间的空间标识和空间相关信息生成内存越界提醒信息,以使得该内存越界提醒信息可以更加全面具体的反映出发生内存越界的内存空间的具体情况,有助于用户(比如,研发技术人员)快速定位到越界的原因。
作为一个示例,如果发生内存越界的内存空间是目标内存空间,结合图3所示的一种内存越界检测方法,对本方案进行进一步的说明:
该方法用于待检测内存空间的内存越界检测,其中,每个待检测内存空间中存储有只读区域标识,如图3所示,该方法可以包括以下步骤:
步骤S310,在至少一个待检测内存空间满足检测条件时,基于满足检测条件的待检测内存空间的空间标识,调用内存越界检测函数。
步骤S320,由内存越界检测函数根据空间标识,检测空间标识所对应的目标内存空间的只读区域标识的标识状态。
步骤S330,根据只读区域标识的标识状态,确定目标内存空间是否发生内存越界。
步骤S340,在目标内存空间发生内存越界时,基于目标内存空间的空间标识,从指定存储位置获取目标内存空间的空间相关信息;
步骤S350,基于目标内存空间的空间标识以及对应的空间相关信息,生成内存越界提醒信息,将内存越界提醒信息提供给用户
其中,上述步骤S310至步骤S330与上述步骤S110至步骤S130的方案一致,在此不再赘述。指定存储位置中存储有目标内存空间的空间标识和空间相关信息,则如果目标内存空间发生内存越界,可从指定存储位置中基于该目标内存空间的空间标识,匹配到该目标内存空间的空间相关信息,该空间相关信息是与该目标内存空间相关的信息,通过该信息可以更加详细的了解该目标内存空间的具体情况,则在目标内存空间发生内存越界时,基于目标内存空间的空间标识以及对应的空间相关信息生成的内存越界提醒信息,可以更加全面具体的反映出该目标内存空间的具体情况,有助于研发技术人员快速定位到发生越界的原因。
为了进一步加强对本方案的理解,下面结合图4中的具体应用场景对本方案进行进一步的说明:
共享内存在游戏后台服务器中使用比较广泛,服务器一般申请一块连续的共享内存,游戏的各个游戏用户可连续的从该共享内存中分配相应的内存空间,以使得游戏用户可以基于所分配的内存进行相应的游戏操作。但是,如果各个游戏用户所分配的内存发生内存越界,会直接造成游戏崩溃,且此种情况下,内存越界不容易检测出来。
基于上述情况,通过本方案的方法,在每个游戏用户登录时,会对应为每个游戏用户分配一个内存空间,将各个内存空间对应的空间标识(比如,内存地址)和空间相关信息存储至指定存储位置(比如,图2中所示的MemCheckData模块),并在每个内存空间中存储只读区域标识(比如,魔鬼数字),每个内存空间都可作为待检测内存空间。
如图4所示,CPlayer表示游戏用户,针对每个游戏用户对应的待检测内存空间,首先构造构建所有待检测内存空间的基类,基类的成员变量包括对应于各待检测内存空间的成员变量;在图4中所示,基类为CMemCheckElement类,该待检内存空间的成员变量为CPlayerBase、CPlayerBox、CPlayerTeam,不同的成员变量在对应的内存区域中可存储有该游戏用户的不同的数据,比如,CPlayerBase成员变量在对应的内存区域中存储的是游戏用户的基本数据,比如,角色名称,角色技能等信息,CPlayerBox成员变量在对应的内存区域中存储的是游戏用户的游戏相关数据,比如,游戏场景,游戏装备等信息,CPlayerTeam成员变量在对应的内存区域中存储的是游戏用户的团队信息,比如,团队成员的信息等。
由于基类的成员变量包括对应于各待检测内存空间成员变量,待检测内存空间的成员变量包括CPlayerBase、CPlayerBox、CPlayerTeam,则基类的成员变量也可以包括CPlayerBase、CPlayerBox、CPlayerTeam。
该待检测空间的第一个成员变量是CPlayerBase,由于各个成员变量在待检测内存空间中对应的内存区域是连续的,即CPlayerBase、CPlayerBox、CPlayerTeam所对应的内存区域是连续的,因此,在上述三个成员变量中任一个对应的内存区域发生内存越界都可以表示该待检测内存空间发生内存越界,因此,为了简化算法,可将只读区域标识存储在该第一个成员变量在待检测内存空间中对应的内存区域中。这样在需要检测待检测内存空间是否发生越界时,只需要检测待检测内存空间的第一个成员变量在待检测内存空间中对应的内存区域是否发生内存越界即可。
基于内存越界的检测需求,构建内存越界检测函数(比如,图4中所示的Check()函数),并将该内存越界检测函数注册在图4中所示的CServiceMemCheck模块中,其中,内存越界检测函数继承自所有待检测内存空间所对应的基类,CServiceMemCheck模块提供CServiceMemCheck接口和Check接口,CServiceMemCheck接口用于接收检测请求(该检测请求可以是在待检测内存空间满足检测条件时,对应***内部生成的请求),该请求中可以包括待检测内存空间的空间标识,Check接口用于调用内存越界检测函数,在基于内存越界检测函数检测待检测内存空间是否发生越界时,基于继承的特性,在需要内存越界检测时,内存越界检测函数则可以基于待检测内存空间的空间标识,对该空间标识所对应的待检测内存空间的指定成员变量(本示例中为第一个成员变量)所对应的内存区域中的只读空间标识进行检测,并基于检测结果确定出该待检测内存空间是否发生了内存越界。
基于上述方案的描述,基于游戏场景的内存越界检测的具体的实现过程为:
将各个游戏用户对应的内存空间作为待检测内存空间,对于每个待检测内存空间,每个待检测内存空间的成员变量包括CPlayerBase、CPlayerBox、CPlayerTeam,第一个成员变量是CPlayerBase,在每个待检测内存空间的第一个成员变量CPlayerBase对应的存储区域中存储只读区域标识(本示例中,只读区域标识可为魔鬼数字)。
在需要对某个游戏用户对应的内存空间进行内存越界检测的时候,即待检测内存空间满足检测条件时(比如,检测条件为每隔设定时间间隔,则满足检测条件指的是在到达设定的时间间隔时),通过CServiceMemCheck接口接收检测请求(该请求指的是满足检测条件时,***内部生成的请求),该请求中包括待检测内存空间的空间标识,基于该空间标识,从MemCheckData模块中确定与该空间标识对应的目标内存空间,该目标内存空间可以是某个游戏用户所对应的内存空间,由于该目标内存空间对应的基类的成员变量包括该目标内存空间的成员变量,且内存越界检测函数Check()继承基类,通过Check接口可调用到继承于基类的内存越界检测函数Check()。
由于基类的成员变量包括该目标内存空间的成员变量,通过该内存越界检测函数Check()可检测该目标内存空间的第一个成员变量CPlayerBase对应的内存区域中存储的只读区域标识的标识状态,如果该只读区域标识的标识状态为发生变化,则表示该目标内存空间(该游戏用户对应的内存空间)发生内存越界,否则,如果该只读区域标识的标识状态为未发生变化,则表示该目标内存空间未发生内存越界。
通过上述检测方式,由于内存越界检测函数Check()继承于基类CMemCheckElement,在确定目标内存空间时,只需要基于空间标识确定需要检测的目标内存空间,该内存越界检测函数即可对应检测该目标内存空间是否发生内存越界,不需要重新编写一次代码,使得该方案可应用于各种需要进行内存越界检测的应用场景中。
基于上述的内存越界检测方案进行检测时,可基于返回的标识符(比如,图4中所示的bool)来标识待检测内存空间中的只读区域标识是否发生变化,比如,bool为1,表示只读区域标识发生变化,即待检测内存空间发生内存越界,bool为0,表示只读区域标识未发生变化,即待检测内存空间未发生内存越界。如果检测的待检测内存空间发生内存越界,则可基于该发生内存越界的内存空间的空间标识,从MemCheckData模块中确定该内存空间的空间相关信息,基于该空间标识和空间相关信息,生成内存越界提醒信息,将该内存越界提醒信息提供给研发技术人员,以使得研发技术人员可基于该提醒信息,确定发生内存越界的原因。基于与图1中所示方法相同的原理,本发明的实施例中还提供了一种装置20,该装置用于待检测内存空间的内存越界检测,其中,每个待检测内存空间中存储有只读区域标识;如图5所示,该装置20可以包括:目标内存空间确定模块210、标识状态检测模块220和内存越界检测模块230,其中:
目标内存空间确定模块210,用于在至少一个待检测内存空间满足检测条件时,基于满足检测条件的待检测内存空间的空间标识,调用内存越界检测函数;
标识状态检测模块220,用于由内存越界检测函数根据空间标识,检测空间标识所对应的目标内存空间的只读区域标识的标识状态;
内存越界检测模块230,用于根据只读区域标识的标识状态,确定目标内存空间是否发生内存越界。
本发明的实施例中的方案,在至少一个待检测内存空间满足检测条件时,基于满足检测条件的待检测内存空间的空间标识,可以调用内存越界检测函数,该内存越界检测函数可以基于该空间标识,检测该空间标识对应的目标内存空间中的只读区域标识的标识状态,用该标识状态来确定该目标内存空间是否发生内存越界,在本方案中,由于各个待检测内存空间中都存储有只读区域标识,因此,在待检测内存空间需要进行检测时,调用的内存越界检测函数基于待检测内存空间的空间标识,对该空间标识对应的目标内存空间的只读区域标识进行检测,即可实现对待检测内存空间的检测,不需要其他额外的设置,该方法实现简单,适用性强。
可选的,空间标识为内存地址。
可选的,该装置还包括:
基类和检测函数构建模块,用于构建所有待检测内存空间的基类,基类的成员变量包括对应于各待检测内存空间的成员变量,只读标识存储在待检测内存空间的指定成员变量对应的内存区域中;构建内存越界检测函数,其中,内存越界检测函数继承基类。
可选的,该装置还包括:
成员变量添加模块,用于在存在新的内存空间需要进行内存越界检测时,将新的内存空间的成员变量添加在基类中。
可选的,指定成员变量为第一个成员变量;
标识状态检测模块在检测空间标识所对应的目标内存空间的只读区域标识的标识状态时,具体用于:
检测空间标识所对应的目标内存空间中第一个成员变量对应的内存区域中的只读区域标识的标识状态。
可选的,该装置还包括:
存储模块,用于将待检测内存空间的空间标识存储至指定存储位置。
可选的,该装置还包括:
内存越界提醒信息生成模块,用于在待检测内存空间发生内存越界时,基于发生内存越界的内存空间的空间标识,生成内存越界提醒信息,将内存越界提醒信息提供给用户。
可选的,存储模块还用于将待检测内存空间的空间相关信息与空间标识关联存储至指定存储位置;
内存越界提醒信息生成模块在基于发生内存越界的内存空间的空间标识,生成内存越界提醒信息时,具体用于:
基于发生内存越界的内存空间的空间标识,从指定存储位置获取发生内存越界的内存空间的空间相关信息;
基于发生内存越界的内存空间的空间标识以及对应的空间相关信息,生成内存越界提醒信息。
可选的,只读区域标识为设定的字符串,标识状态包括发生变化和未发生变化;
内存越界检测模块在根据只读区域标识的标识状态,确定目标内存空间是否发生内存越界时,具体用于:
若字符串发生变化,目标内存空间发生内存越界;
若字符串未发生变化,目标内存空间未发生内存越界。
可选的,字符串为魔鬼数字。
可选的,待检测内存空间为只读空间。
本发明实施例的内存越界检测装置可执行图1所示的一种内存越界检测方法,其实现原理相类似,本发明各实施例中的内存越界检测装置中的各模块所执行的动作是与本发明各实施例中的内存越界检测方法中的步骤相对应的,对于内存越界检测装置的各模块的详细功能描述具体可以参见前文中所示的对应的内存越界检测方法中的描述,此处不再赘述。
基于与本发明的实施例中的方法相同的原理,本发明提供了一种电子设备,该电子设备包括处理器和存储器;存储器,用于存储操作指令;处理器,用于通过调用操作指令,执行如本发明的方法中的任一实施例中所示的方法。
基于与本发明的实施例中的方法相同的原理,本发明提供了一种计算机可读存储介质,该存储介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如本发明的数据处理方法中的任一实施例中所示的方法。
本发明的实施例中,如图6所示,其示出了适于用来实现本发明实施例的电子设备50(例如实现图1中所示的方法的终端设备或服务器)的结构示意图。本发明实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,电子设备50可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储装置508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有电子设备30操作所需的各种程序和数据。处理装置501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
通常,以下装置可以连接至I/O接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备50与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备50,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从ROM 502被安装。在该计算机程序被处理装置501执行时,执行本发明实施例的方法中限定的上述功能。
需要说明的是,本发明上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述方法实施例所示的方法;或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述方法实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
以上描述仅为本发明的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本发明中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (12)

1.一种内存越界检测方法,其特征在于,所述方法用于待检测内存空间的内存越界检测,其中,每个所述待检测内存空间中存储有只读区域标识;所述方法包括:
在至少一个所述待检测内存空间满足检测条件时,基于满足检测条件的待检测内存空间的空间标识,调用内存越界检测函数;所述待检测内存空间构建有基类,所述基类的成员变量包括对应于各待检测内存空间的成员变量;所述只读区域标识存储在待检测内存空间的第一个成员变量对应的内存区域中;所述内存越界检测函数继承所述基类,并基于所述基类对所述基类中包括的成员变量对应的内存空间进行内存越界检测;当存在新的内存空间需要进行内存越界检测时,将新的内存空间的成员变量添加在所述基类中;
由所述内存越界检测函数根据所述空间标识,检测所述空间标识所对应的目标内存空间的只读区域标识的标识状态,包括:检测空间标识所对应的目标内存空间中第一个成员变量对应的内存区域中的只读区域标识的标识状态;所述待检测内存空间中各成员变量对应的内存区域是连续的;
根据所述只读区域标识的标识状态,确定所述目标内存空间是否发生内存越界。
2.根据权利要求1所述的方法,其特征在于,所述空间标识为内存地址。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
构建所有待检测内存空间的基类;
构建所述内存越界检测函数。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
将所述待检测内存空间的空间标识存储至指定存储位置。
5.根据权利要求1至3中任一项所述的方法,其特征在于,在所述待检测内存空间发生内存越界时,所述方法还包括:
基于发生内存越界的内存空间的空间标识,生成内存越界提醒信息,将所述内存越界提醒信息提供给用户。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
将所述待检测内存空间的空间相关信息与所述空间标识关联存储至指定存储位置;
所述基于发生内存越界的内存空间的空间标识,生成内存越界提醒信息,包括:
基于所述发生内存越界的内存空间的空间标识,从所述指定存储位置获取所述发生内存越界的内存空间的空间相关信息;
基于所述发生内存越界的内存空间的空间标识以及对应的空间相关信息,生成所述内存越界提醒信息。
7.根据权利要求1至3中任一项所述的方法,其特征在于,所述标识状态包括发生变化和未发生变化;
所述根据所述只读区域标识的标识状态,确定所述目标内存空间是否发生内存越界,包括:
若字符串发生变化,所述目标内存空间发生内存越界;
若所述字符串未发生变化,所述目标内存空间未发生内存越界。
8.根据权利要求7所述的方法,其特征在于,所述字符串为魔鬼数字。
9.根据权利要求1至3中任一项所述的方法,其特征在于,所述待检测内存空间为只读空间。
10.一种内存越界检测装置,其特征在于,所述装置用于待检测内存空间的内存越界检测,其中,每个所述待检测内存空间中存储有只读区域标识;所述装置包括:
目标内存空间确定模块,用于在至少一个所述待检测内存空间满足检测条件时,基于满足检测条件的待检测内存空间的空间标识,调用内存越界检测函数;所述待检测内存空间构建有基类,所述基类的成员变量包括对应于各待检测内存空间的成员变量;所述只读区域标识存储在待检测内存空间的第一个成员变量对应的内存区域中;所述内存越界检测函数继承所述基类,并基于所述基类对所述基类中包括的成员变量对应的内存空间进行内存越界检测;当存在新的内存空间需要进行内存越界检测时,将新的内存空间的成员变量添加在所述基类中;
标识状态检测模块,用于由所述内存越界检测函数根据所述空间标识,检测所述空间标识所对应的目标内存空间的只读区域标识的标识状态,包括:检测空间标识所对应的目标内存空间中第一个成员变量对应的内存区域中的只读区域标识的标识状态;所述待检测内存空间中各成员变量对应的内存区域是连续的;
内存越界检测模块,用于根据所述只读区域标识的标识状态,确定所述目标内存空间是否发生内存越界。
11.一种电子设备,其特征在于,包括:
处理器和存储器;
所述存储器,用于存储计算机操作指令;
所述处理器,用于通过调用所述计算机操作指令,执行权利要求1至9中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现权利要求1至9中任一项所述的方法。
CN201910950733.4A 2019-10-08 2019-10-08 内存越界检测方法、装置、电子设备及计算机存储介质 Active CN110674050B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910950733.4A CN110674050B (zh) 2019-10-08 2019-10-08 内存越界检测方法、装置、电子设备及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910950733.4A CN110674050B (zh) 2019-10-08 2019-10-08 内存越界检测方法、装置、电子设备及计算机存储介质

Publications (2)

Publication Number Publication Date
CN110674050A CN110674050A (zh) 2020-01-10
CN110674050B true CN110674050B (zh) 2022-04-19

Family

ID=69080910

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910950733.4A Active CN110674050B (zh) 2019-10-08 2019-10-08 内存越界检测方法、装置、电子设备及计算机存储介质

Country Status (1)

Country Link
CN (1) CN110674050B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112114964A (zh) * 2020-08-17 2020-12-22 上海睿赛德电子科技有限公司 一种适用于嵌入式***的应用安全访问内核方法
CN115373964B (zh) * 2022-10-24 2023-01-20 北京智芯微电子科技有限公司 内存越界检测方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145129A (zh) * 2007-07-18 2008-03-19 中兴通讯股份有限公司 一种嵌入式***内存写越界的检测方法及***
CN101183331A (zh) * 2007-12-12 2008-05-21 上海华为技术有限公司 一种任务栈溢出检测方法、装置及计算机***
CN107480045A (zh) * 2017-07-05 2017-12-15 积成电子股份有限公司 一种电能表软件的检错纠错与轨迹跟踪方法
CN108388517A (zh) * 2018-03-14 2018-08-10 深圳怡化电脑股份有限公司 一种内存检测方法、装置、设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9836381B2 (en) * 2015-05-13 2017-12-05 Stensal Inc. Translating machine codes to store metadata and to propagate metadata for run time checking of programming errors
CN106095689B (zh) * 2016-06-24 2019-02-12 北京奇虎科技有限公司 一种应用内存泄露的检测方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145129A (zh) * 2007-07-18 2008-03-19 中兴通讯股份有限公司 一种嵌入式***内存写越界的检测方法及***
CN101183331A (zh) * 2007-12-12 2008-05-21 上海华为技术有限公司 一种任务栈溢出检测方法、装置及计算机***
CN107480045A (zh) * 2017-07-05 2017-12-15 积成电子股份有限公司 一种电能表软件的检错纠错与轨迹跟踪方法
CN108388517A (zh) * 2018-03-14 2018-08-10 深圳怡化电脑股份有限公司 一种内存检测方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
cppcheck源码分析;WuLiang;《https://www.slideshare.net/magicsky/cppcheck-9660535》;20150719;1-55 *

Also Published As

Publication number Publication date
CN110674050A (zh) 2020-01-10

Similar Documents

Publication Publication Date Title
CN110502357B (zh) 一种栈回溯方法、装置、介质和设备
CN112214408B (zh) 依赖冲突检测方法、装置、电子设备及计算机可读介质
CN113835992B (zh) 内存泄露的处理方法、装置、电子设备及计算机存储介质
CN110865852B (zh) 网页组件的加载方法、装置、电子设备、及存储介质
CN104268472B (zh) 还原被第三方动态库修改函数地址的方法和装置
JP7467644B2 (ja) メッセージ処理方法、装置及び電子機器
CN110287810B (zh) 车门动作检测方法、装置和计算机可读存储介质
CN110674050B (zh) 内存越界检测方法、装置、电子设备及计算机存储介质
CN111079125A (zh) 一种应用程序调用第三方库动态提升权限的方法及装置
CN110673986A (zh) 内存操作的异常捕获方法、装置、终端及存储介质
CN109739582B (zh) 函数调用方法、装置、电子设备和计算机可读存储介质
CN113157439B (zh) 一种资源统计方法、装置及终端
CN111626990B (zh) 目标检测框处理方法、装置及电子设备
CN107133169B (zh) 应用测试包生成方法及生成装置
CN111857518A (zh) 图像编辑操作的撤销方法、装置、电子设备及介质
CN111143089A (zh) 一种应用程序调用第三方库动态提升权限的方法及装置
CN109408387B (zh) 页面测试方法及装置
CN111309406A (zh) 应用程序的事件处理方法、装置及电子设备
CN111124627A (zh) 应用程序的调起者确定方法、装置、终端及存储介质
CN111625326B (zh) 任务管线执行方法、装置及电子设备
CN111290812B (zh) 应用控件的显示方法、装置、终端及存储介质
CN106203087B (zh) 注入防护方法、***、终端以及存储介质
CN110083283B (zh) 用于管理信息的方法、装置和***
CN111949528A (zh) 内存泄漏的检测方法、装置、电子设备和存储介质
CN110245086B (zh) 应用程序稳定性测试方法、装置及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40018308

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant