一种内存管理方法及相关装置与流程

文档序号:18214108发布日期:2019-07-19 22:31阅读:132来源:国知局
一种内存管理方法及相关装置与流程

本发明涉及计算机技术领域,尤其涉及一种内存管理方法及相关装置。



背景技术:

随着计算机的迅速发展,随着人们对计算机性能的要求不断提高,为了适应计算机其他硬件设备的改进,计算机的内存的需求也越来越大,除了可以在内存容量上进行改进,还可以在内存容量不变的情况下,对内存进行高效利用。

目前,程序开发人员使用内存进行工作,一般会定义各种各样的局部或者全局变量来存储临时数据,内存同时需要对写入数据和读取数据进行处理。对于存储数据则需要先申请内存空间,使用完成后再通过人工操作主动释放占用的内存空间。

当程序开发人员,申请了内存使用,并在使用完成后忘记了释放内存,会导致了内存泄露;又或者是在程序执行过程中,出现了错误导致后续流程没有执行,从而产生内存泄露。内存泄露严重的情况下则会导致程序内存使用完而产生崩溃,同时如果对于一块内存如果释放多次也会导致程序崩溃。同时对于一些程序,内存中的数据是敏感信息,如果使用明文存储,则存在安全的风险,比如,用户输入的密码信息等等,如果明文存储则可能会被黑客使用内存搜索工具很容易搜索到内存的数据,从而方便的进行修改内存数据。



技术实现要素:

本发明提供了一种内存管理方法及相关装置,用于自动完成内存的申请和释放,避免发生内存泄露,并对内存中的数据进行加密/解密操作,提高了安全性。

本发明第一方面提供了一种内存管理方法,包括:

获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;

响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;

根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;

接收所述用户的数据操作指令;

响应于所述用户的数据操作指令,对所述目标内存进行数据管理以及数据的加密和/或解密操作,并记录所述目标内存的位置;

当停止使用所述目标内存后,通过所述管理类对所述目标内存进行释放。

可选的,所述对所述目标内存进行数据管理以及数据的加密和/或解密操作,并记录所述目标内存的位置包括:

通过所述管理类对所述目标内存进行读取和解密操作,和/或写入和加密操作,并记录所述目标内存的位置。

可选的,所述通过所述管理类对所述目标内存进行读取和解密操作,和/或写入和加密操作,并记录所述目标内存的位置包括:

通过所述管理类调用写入模板函数向所述目标内存写入第一目标数据,调用加密函数对所述第一目标数据进行加密,并记录写入了所述第一目标数据的所述目标内存的位置;和/或,通过所述管理类调用读取模板函数读取所述目标内存中的第二目标数据,调用解密函数对所述第二目标数据进行解密,并记录读取到所述第二目标数据的所述目标内存的位置。

可选的,所述通过所述管理类申请所述预置容量大小的目标内存包括:

通过所述管理类申请所述预置容量大小的目标内存,并调用构造函数对所述目标内存进行管理。

可选的,所述通过所述管理类对所述目标内存进行释放包括:

通过所述管理类调用析构函数释放所述目标内存。

本发明第二方面提供了一种内存管理装置,包括:

获取单元,用于获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;

创建单元,用于响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;

申请单元,用于根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;

接收单元,用于接收所述用户的数据操作指令;

处理单元,用于响应于所述用户的数据操作指令,对所述目标内存进行数据管理以及数据的加密和/或解密操作,并记录所述目标内存的位置;

释放单元,当停止使用所述目标内存后,用于通过所述管理类对所述目标内存进行释放。

可选的,所述处理单元包括:

处理模块,用于通过所述管理类对所述目标内存进行读取和解密操作,和/或写入和加密操作,并记录所述目标内存的位置。

可选的,所述处理模块具体用于:

通过所述管理类调用写入模板函数向所述目标内存写入第一目标数据,调用加密函数对所述第一目标数据进行加密,并记录写入了所述第一目标数据的所述目标内存的位置;和/或,通过所述管理类调用读取模板函数读取所述目标内存中的第二目标数据,调用解密函数对所述第二目标数据进行解密,并记录读取到所述第二目标数据的所述目标内存的位置。

本发明第三方面提供了一种电子设备,包括存储器、处理器,其特征在于,所述处理器用于执行存储器中存储的计算机管理类程序时实现如上述任意一项所述的内存管理方法的步骤。

本发明第四方面提供了一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于:所述计算机管理类程序被处理器执行时实现如上述任意一项所述的内存管理方法的步骤。

附图说明

图1为本发明实施例中内存管理方法的一个实施例示意图;

图2为本发明实施例中内存管理装置的一个实施例示意图;

图3为本发明实施例中内存管理装置的另一个实施例示意图;

图4为本发明实施例中内存管理装置的一种硬件结构示意图;

图5为本发明实施例中内存管理装置的另一种硬件结构示意图。

具体实施方式

本发明提供了一种内存管理方法及相关装置,用于自动完成内存的申请和释放,避免发生内存泄露,并对内存中的数据进行加密/解密操作,提高了安全性。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

请参阅图1,图1为本发明实施例提供的内存管理方法的一个实施例示意图,包括:

101、获取用户的内存请求指令,内存请求指令携带有用户所需内存的预置容量大小。

获取用户的内存请求指令,内存请求指令携带有用户所需内存的预置容量大小。

可以理解的是,用户可以根据实际需要,内存管理装置申请内存,该内存的大小由用户决定,并且内存请求指令中携带的预置容量大小不能超过内存管理装置所能提供的最大容量。

需要说明的是,在获取用户的内存请求指令之前,内存管理装置还需要定义一个管理类和相关函数,该管理类可以用来完成内存的申请和释放操作,以及可以完成对内存写入数据和读取数据的操作,并且自动记录内存的读写位置。本发明实施例及后续实施例中的管理类中的相关函数可以包括接口函数,为了便于说明,本发明实施例及后续实施例中将接口函数简称为接口。

具体实现如下:

首先本发明定义一个缓存的管理类automgrbuffer:

classautomgrbuffer{

此类则是用于管理内存申请和释放以及提供相关接口。

定义构造函数以用于初始化类automgrbuffer的对象属性。

automgrbuffer(size_t_size=256,char*pkey,intencodetype);

本发明提供了一个接口用于传入一个申请的内存大小,用于当申请的内存已经写满数据,需要重新申请内存时,申请的内存大小,如果太大则造成内存浪费,如果太小则会频繁的申请内存,所以用户可以依据使用场景来填入该数据的大小。其中,char*pkey则是用于对数据加密时使用的key值,这样则可以对每个内存使用不同的key来加密,进一步的加强其安全性。同时提供了一个参数intencodetype用于设置使用何种加密算法,本发明也会提供多种加密算法来对数据进行加解密,用户可以依据使用的场景和数据的保密程度来使用不同的加密算法。

定义构造函数,传入一个已经分配的内存buff。

一个对象出生时会调用构造函数,死亡时则会调用析构函数。

定义其析构函数的接口,其中析构函数主要用于完成清理工作,列如释放内存,当创建的automgrbuffer对象在其作用域中使用完成后,系统会自动调用其析构函数,从而本文则可以在析构函数中进行内存的释放,从而不需要用户去显示的调用内存释放操作,从而避免用户忘记释放内存而导致内存泄漏。

~automgrbuffer();

定义模板的写入缓存的接口:

template<classt>voidwrite(constt&_val);

template<classt>是c++语言提供的模板类型的申明,代表此函数是一个模板函数,模板类型则是t类型。

此接口提供一个写入模板对象的接口,从而使用这一个接口既可以写入类型为int、char、uint、uchar、int32、int64、对象类型等等,那么对于用户并不需要区分写入数据的类型而调用不同的接口,本文则可以直接都调用写入(write)模板类型接口。

定义模板的读取缓存数据的接口:

template<classt>size_tread(t&_val);

此接口提供一个读取模板对象的接口,从而使用这一个接口既可以读取类型为int、char、uint、uchar、int32、int64、对象类型等等,那么对于用户并不需要区分读取数据的类型而调用不同的接口,本文则可以直接都调用读取(read)模板类型接口。

定义接口以获取当前缓存的大小容量:

size_tcapacity()const;

此接口用于返回申请的内存大小,以供用户知道内存的申请大小。

定义接口以获取当前缓存的剩余大小:

size_tlength()const;

此接口用于返回申请的内存写入数据后,还剩于多大的内存空间可以写入数据。

定义接口用于重置automgrbuffer对象。

当automgrbuffer使用完后,需要进行内存释放,并情况其属性,本发明则提供一个接口用于重置automgrbuffer对象。

voidreset();

此接口则会释放掉申请的内存,并将属性进行情况。

}

定义接口将其他构造函数定义成私有的,防止对象拷贝

private:

automgrbuffer(constautomgrbuffer&_rhs);

automgrbuffer&operator=(constautomgrbuffer&_rhs);

在c++语言的语法中,将上述函数定义成私有的,则可以防止用户对对象进行拷贝操作,防止同一份内存使用2个不同的automgrbuffer对象来管理。

定义数据加密接口:

voidencode(char*buff,intnlen,char*key,intencodetype);

其中参数char*buff则是需要加密的数据的buff。

其中参数intnlen则是需要加密的数据长度。

其中参数char*key则是需要加密使用的key。

其中参数intencodetype则是需要加密时使用的加密算法。

定义数据解密接口:

voiddecode(char*buff,intnlen,char*key,intdecodetype);

其中参数char*buff则是需要解密的数据的buff。

其中参数intnlen则是需要解密的数据长度。

其中参数char*key则是需要解密使用的key。

其中参数intdecodetype则是需要解密时使用的解密算法。

同时加密算法必须与解密算法进行配对,本文的成员变量会存储当前使用的加密算法的类型,从而不会导致算法不配对。

定义automgrbuffer类的成员属性数据。

对于automgrbuffer类来说需要记录当期申请的内存地址,内存的容量大小,当前数据写入的内存位置,当期申请的缓存还剩余的内存空间。

unsignedchar*m_pbuff;用于记录内存的申请内存的起始地址。

size_tm_capacity;用于记录已经每次申请内存的大小。

size_tm_pos;用于记录当前内存数据写入的位置。

size_tm_length;用于记录申请的内存还有多少容量可以写数据。

size_tm_unitsize;用于记录每次申请内存空间的大小。

102、响应于内存请求指令,创建一个管理类,管理类用于管理内存的申请和释放。

响应于内存请求指令,创建一个管理类,管理类用于管理内存的申请和释放。

需要说明的是,管理类中包括多个函数,具体的,可以是用于初始化定义automgrbuffer对象的构造函数,本发明实施例提供了两个构造函数和一个析构函数,具体实现如下:

对于接口automgrbuffer(size_t_size=256,char*pkey,intencodetype);的实现如下:

此接口则初始化成员变量,并将参数赋值给成员变量。

其中增加了一个m_pkey用于存储加密时使用的key值。

其中增加了一个m_encodetype用于存储加密的类型。

对于接口automgrbuffer(void*buf,size_t_len,size_t_size=256,char*pkey,intencodetype);实现如下:

此接口也是对成员变量进行赋值操作。

对于接口~automgrbuffer()具体实现如下:

103、根据内存分配请求指令,通过管理类申请预置容量大小的目标内存。

根据内存分配请求指令,通过管理类申请预置容量大小的目标内存。

需要说明的是,管理类调用上述定义的构造函数向内存管理装置申请预置容量大小的内存。

对于不同的情况,可以调用不同的构造函数,例如,当申请的内存已经写满数据,需要重新申请内存时,调用函数automgrbuffer(size_t_size=256,char*pkey,intencodetype);

其中,数值为256,还可以是其他数值,具体此处不做限定。还可以是其他申请的内存大小,可以理解的是,用户可以根据实际需要,内存管理装置申请内存,该内存的大小由用户决定,并且内存请求指令中携带的预置容量大小不能超过内存管理装置所能提供的最大容量。如果太大则造成内存浪费,如果太小则会频繁的申请内存,所以用户可以依据使用场景来填入该数据的大小。

104、接收用户的数据操作指令。

接收用户的数据操作指令。具体的,将用户发送的指令,例如,向内存中写入数据或者是从内存中读取数据,数据在内存中的存储形式此处不再赘述。

需要说明的是,在接收到用户的数据操作指令之前,内存管理设备还会定义模板函数,模板函数包括写入数据的接口、读取数据的接口、加密数据的接口和解密数据的接口。

具体的实现如下:

加密数据的接口(加密函数),此接口会对外提供多种加密方式,既可以是快速加密,也可以是更为安全的加密。用户可以依据对数据的保护程度来选择使用何种加密方式。

voidencode(char*buff,intnlen,char*key,intencodetype);

本发明的接口是上述接口,通过参数encodetype来选择加密类型。

本发明实施例中提供了3种加密方案,可以理解的是,还可以有其他的加密方案,具体此处不做限定。加密数据的函数如下:

if(encodetype==0)

{

当加密类型为0时,本发明实施例选择使用异或运算符来对数据进行加密,从而起执行速度基本可以忽略。具体实现如下:

for(inti=0;i<nlen;i++)

{

首先编写一个循环语句来对输入的数据进行每个字节的加密。

buff[i]=buff[i]^key[i];

加密则是对buff中的数据和输入的key的数据进行异或运算得得加密结果。

}

}

elseif(encodetype==1)

{

tea.encrypt(buff,nlen,key);

当加密类型为1时,本发明实施例则选择使用tea加密算法来对数据进行加密,并且tea加密算法则计算速度快,加密强度比异或运算符高。

}

elseif(encodetype==2)

{

des.encrypt(buff,nlen,key);

当加密类型为2时,本发明实施例则选择使用des加密算法来对数据进行加密,并且des加密算法则计算速度慢,加密强度比tea运算符更高,其安全性更好。

上面定义了加密数据的接口,此接口会对外提供多种加密方式,既可以是快速加密,也可以是更为安全的加密。使用者可以依据对数据的保护程度来选择使用何种加密方式。

voiddecode(char*buff,intnlen,char*key,intdecodetype);

本发明实施例的解密接口(解密函数)是上述接口,通过参数decodetype来选择解密类型。

在此本发明实施例提供3种解密方案,当然本发明实施例的解密方案是和加密方案一一对应的。

if(decodetype==0)

{

当解密类型为0时,本发明实施例选择使用异或运算符来对数据进行解密,从而起执行速度基本可以忽略,因为异或运算执行2次则得到原始的数据,则相当于进行了解密数据。具体实现如下:

for(inti=0;i<nlen;i++)

{

首先编写一个循环语句来对输入的数据进行每个字节的解密。

buff[i]=buff[i]^key[i];

解密则是对buff中的数据和输入的key的数据进行异或运算得得解密结果。

}

}

elseif(decodetype==1)

{

tea.encrypt(buff,nlen,key);

当解密类型为1时,本发明实施例则选择使用tea解密算法来对数据进行解密,并且tea解密算法则计算速度快,解密和加密一一对应。

}

elseif(decodetype==2)

{

des.decrypt(buff,nlen,key);

当解密类型为2时,本发明实施例则选择使用des解密算法来对数据进行解密,并且des解密算法则计算速度慢,加密强度比tea运算符更高,其安全性更好。

定义模板函数的写入数据的接口,此接口则提供给用户可以写入任意类型的数据。

template<classt>voidwrite(constt&_val)

{

write(&_val,sizeof(_val));

{

首先会对写入数据的长度进行判断,如果超过可以写入的长度,则需要重新分配内存,否则可以直接将数据拷贝到缓存中。

举例说明,如果超过长度,则重新分配内存,并且分配力度是以m_unitsize为单元,进行分配,具体则是调用如下函数来分配:

size_tmallocsize=((_len+m_unitsize-1)

/m_unitsize)*m_unitsize;

首先计算需要分配的长度,分配的力度是m_unitsize为单元。

得到长度后,调用系统函数来分配内存。

void*p=realloc(m_pbuff,mallocsize);

系统函数realloc则是重新分配内存,分配大小则是mallocsize。

m_pbuff=(unsignedchar*)p;

并将分配的新的内存赋值给成员变量m_pbuff来进行保存。

分配完成内存后,接下来则是将需要写入的数据拷贝到分配的新的内存的后面。

在此写入数据时,则会先对写入的数据进行加密处理,具体则是调用上述定义的加密接口来实现。

char*pdata=(char*)&_val;

调用加密接口encode来实现对写入的数据进行加密。

encode(pdata,sizeof(_val),m_pkey,m_encodetype);

memcpy(m_pbuff+m_pos,&_val,sizeof(_val));

从而完成了对数据的写入功能。

}

}

本发明实施例提供一个模板的读取数据的接口,从而方便的读取任意类型的数据。具体实现如下:

template<classt>size_tread(t&_val)

{

read(&_val,sizeof(_val));

{

首先对参数读取合法性进行判断,读取的指针如果为空则直接返回,读取不成功;读取的指针若不为空,则从当前已经内存中拷贝数据。

memcpy(pbuffer,m_pbuff+m_pos-readlen,readlen);

从而将数据拷贝到需要读取的pbuffer指针中。

在此需要对读取的数据进行解密才能得到原始的数据,具体解密则是调用上述定义的解密接口。

decode(pbuffer,readlen,m_pkey,m_encodetype);

其中加密的类型则是对应于同样的解密算法的类型。从而最终得到pbuffer中的数据是解密过的。

}

}

105、响应于用户的数据操作指令,对目标内存进行数据管理以及数据的加密和/或解密操作,并记录目标内存的位置。

响应于用户的数据操作指令,对目标内存进行数据管理以及数据的加密和/或解密操作,并记录目标内存的位置。

具体的,通过管理类调用写入模板函数向目标内存写入第一目标数据,调用加密函数对所述第一目标数据进行加密,并记录写入了第一目标数据的目标内存的位置;和/或,通过管理类调用读取模板函数读取目标内存中的第二目标数据,调用解密函数对所述第二目标数据进行解密,并记录读取到第二目标数据的目标内存的位置。

具体的,写入模板函数为上述定义的写入数据接口,接口如下:

具体的,读取模板函数为上述定义的读取数据接口,接口如下:

需要说明的是,还可以定义更多其他功能的接口函数,例如,可以获取当前写入的指针位置的函数;可以获取当前已经分配的内存大小的函数,以及对当前分配的内存进行重置的函数等等。

106、当停止使用目标内存后,通过管理类对目标内存进行释放。

当停止使用目标内存后,通过管理类调用析构函数对目标内存进行释放。

举例说明,当完成了内存管理装置的定义和接口以及实现后,则可以方便的使用。本发明实施例对其具体实践性进行举例说明,具体实现如下:

对于不使用内存管理装置来读写内存,其具体操作如下:

首先分配一段内存,然后写入数据,然后读取数据。

char*pbuff=newchar[100];

intnpos=0;

写入数据如下:

intndata=53;

首先要判断当期剩余的内存是否可以写入这个数据。

if(sizeof(ndata)>100–npos)

return;则说明不能再写入数据了。

memcpy(pbuff+npos,&ndata,sizeof(ndata));

同时需要去更新npos,以方便下一个数据的写入。

npos=npos+sizeof(ndata)。

如果写入大量的数据,则上述代码则会变的非常庞大,并且一定要对变量npos进行赋值,否则数据会被上个数据覆盖,并且每次写入还要判断当期写入的数据是否超过了分配的内存。

同时在使用完成后,一定要对分配的pbuff进行内存释放,否则会造成了内存泄漏。

对于使用内存管理装置时:

automgrbufferbuff;

首先根据定义的管理类automgrbuffer。

然后写入数据:

intndata=53;

buff.write(ndata);那么管理类只需要一行代码则可以完成数据的写入,并且内部会判断当前内存是否可以写入该数据,并且如果不够写则会自动分配内存来写入。

intnread=0;

buff.read(nread);

读取数据也只需要一行代码,则可以读取数据。

该管理类使用完成后,超出了其作用范围后,申请的内存会自动释放,不需要用户进行显示的调用去释放,从而避免因为用户忘记释放而造成内存泄漏。从而为用户提供便利。

上面从内存管理方法的角度对本发明实施例进行了描述,下面从内存管理装置的角度对本发明实施例进行描述。

请参阅图2,图2为本发明实施例提供的内存管理装置的一个实施例示意图,该内存管理装置,具体包括:

获取单元201,用于获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;

创建单元202,用于响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;

申请单元203,用于根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;

接收单元204,用于接收所述用户的数据操作指令;

处理单元205,用于响应于所述用户的数据操作指令,对所述目标内存进行数据管理以及数据的加密和/或解密操作,并记录所述目标内存的位置;

释放单元206,当停止使用所述目标内存后,用于通过所述管理类对所述目标内存进行释放。

如图3,本发明实施例提供的内存管理装置的另一个实施例示意图,包括:

获取单元301,用于获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;

创建单元302,用于响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;

申请单元303,用于根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;

接收单元304,用于接收所述用户的数据操作指令;

处理单元305,用于响应于所述用户的数据操作指令,对所述目标内存进行数据管理以及数据的加密和/或解密操作,并记录所述目标内存的位置;

释放单元306,当停止使用所述目标内存后,用于通过所述管理类对所述目标内存进行释放。

可选的,所述处理单元305包括:

处理模块3051,用于通过所述管理类对所述目标内存进行读取和解密操作,和/或写入和加密操作,并记录所述目标内存的位置。

可选的,处理模块3051具体用于:

通过所述管理类调用写入模板函数向所述目标内存写入第一目标数据,调用加密函数对所述第一目标数据进行加密,并记录写入了所述第一目标数据的所述目标内存的位置;和/或,通过所述管理类调用读取模板函数读取所述目标内存中的第二目标数据,调用解密函数对所述第二目标数据进行解密,并记录读取到所述第二目标数据的所述目标内存的位置。

本发明实施例,获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;接收所述用户的数据操作指令;响应于所述用户的数据操作指令,对所述目标内存进行数据管理以及数据的加密和/或解密操作,并记录所述目标内存的位置;当停止使用所述目标内存后,通过所述管理类对所述目标内存进行释放。管理类可以自动完成内存的申请和释放,避免发生内存泄露,并对内存中的数据进行加密/解密操作,提高了安全性。

请参阅图4,图4为本发明实施例提供的电子设备的实施例示意图。

如图4所示,本发明实施例提供了一种电子设备,包括存储器410、处理器420及存储在存储器420上并可在处理器420上运行的计算机程序411,处理器420执行计算机程序411时实现以下步骤:

获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;

响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;

根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;

接收所述用户的数据操作指令;

响应于所述用户的数据操作指令,对所述目标内存进行数据管理以及数据的加密和/或解密操作,并记录所述目标内存的位置;

当停止使用所述目标内存后,通过所述管理类对所述目标内存进行释放。

可选的,所述对所述目标内存进行数据管理以及数据的加密和/或解密操作,并记录所述目标内存的位置包括:

通过所述管理类对所述目标内存进行读取和解密操作,和/或写入和加密操作,并记录所述目标内存的位置。

可选的,所述通过所述管理类对所述目标内存进行读取和解密操作,和/或写入和加密操作,并记录所述目标内存的位置包括:

通过所述管理类调用写入模板函数向所述目标内存写入第一目标数据,调用加密函数对所述第一目标数据进行加密,并记录写入了所述第一目标数据的所述目标内存的位置;和/或,通过所述管理类调用读取模板函数读取所述目标内存中的第二目标数据,调用解密函数对所述第二目标数据进行解密,并记录读取到所述第二目标数据的所述目标内存的位置。

可选的,所述通过所述管理类申请所述预置容量大小的目标内存包括:

通过所述管理类申请所述预置容量大小的目标内存,并调用构造函数对所述目标内存进行管理。

可选的,所述通过所述管理类对所述目标内存进行释放包括:

通过所述管理类调用析构函数释放所述目标内存。

在具体实施过程中,处理器420执行计算机程序411时,可以实现图1对应的实施例中任一实施方式。

由于本实施例所介绍的电子设备为实施本发明实施例中一种内存管理装置所采用的设备,故而基于本发明实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本发明实施例中的方法不再详细介绍,只要本领域所属技术人员实施本发明实施例中的方法所采用的设备,都属于本发明所欲保护的范围。

请参阅图5,图5为本发明实施例提供的一种计算机可读存储介质的实施例示意图。

如图5所示,本实施例提供了一种计算机可读存储介质500,其上存储有计算机程序511,该计算机程序511被处理器执行时实现如下步骤:

获取用户的内存请求指令,所述内存请求指令携带有用户所需内存的预置容量大小;

响应于所述内存请求指令,创建一个管理类,所述管理类用于管理内存的申请和释放;

根据所述内存分配请求指令,通过所述管理类申请所述预置容量大小的目标内存;

接收所述用户的数据操作指令;

响应于所述用户的数据操作指令,对所述目标内存进行数据管理以及数据的加密和/或解密操作,并记录所述目标内存的位置;

当停止使用所述目标内存后,通过所述管理类对所述目标内存进行释放。

可选的,所述对所述目标内存进行数据管理以及数据的加密和/或解密操作,并记录所述目标内存的位置包括:

通过所述管理类对所述目标内存进行读取和解密操作,和/或写入和加密操作,并记录所述目标内存的位置。

可选的,所述通过所述管理类对所述目标内存进行读取和解密操作,和/或写入和加密操作,并记录所述目标内存的位置包括:

通过所述管理类调用写入模板函数向所述目标内存写入第一目标数据,调用加密函数对所述第一目标数据进行加密,并记录写入了所述第一目标数据的所述目标内存的位置;和/或,通过所述管理类调用读取模板函数读取所述目标内存中的第二目标数据,调用解密函数对所述第二目标数据进行解密,并记录读取到所述第二目标数据的所述目标内存的位置。

可选的,所述通过所述管理类申请所述预置容量大小的目标内存包括:

通过所述管理类申请所述预置容量大小的目标内存,并调用构造函数对所述目标内存进行管理。

可选的,所述通过所述管理类对所述目标内存进行释放包括:

通过所述管理类调用析构函数释放所述目标内存。

需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1