一种对象创建方法、终端装置及存储介质制造方法及图纸

技术编号:24937191 阅读:31 留言:0更新日期:2020-07-17 20:46
本发明专利技术公开了一种对象创建方法、终端装置及存储介质,适用于应用开发技术领域。本发明专利技术提供的方法包括:重定义对象内存分配函数的接口和指定地址调用构造函数的接口;调用所述对象内存分配函数申请预定大小的内存空间;通过系统编译器内部指令设定在所述内存空间中预存储数据字节对齐;利用所述指定地址调用构造函数的接口函数设定所述内存空间的首地址为指定内存地址,在所述指定地址创建对象。本发明专利技术可以使对象创建在指定内存上进行,进而提高对象创建效率。

【技术实现步骤摘要】
一种对象创建方法、终端装置及存储介质
本专利技术属于应用开发领域,尤其涉及一种对象创建方法、终端装置及存储介质。
技术介绍
在应用开发过程中,经常会用到类与对象。程序运行过程中,会创建对象来封装数据,操作数据以执行相应的任务,当需要创建大量对象时,创建过程耗时就会非常耗时。目前,最常用的对象创建方式是直接调用new操作符,而直接通过new操作符创建对象是随机获取内存空间,系统中存在大量的内存碎片时,创建效率较低。
技术实现思路
有鉴于此,本专利技术实施例提供了一种对象创建方法、终端装置及存储介质,用于解决当前对象创建方式中未对内存进行优化,导致对象创建效率较低的问题。在本专利技术实施例的第一方面,提供了一种对象创建方法,包括:重定义对象内存分配函数的接口和指定地址调用构造函数的接口;调用所述对象内存分配函数的接口函数申请预定大小的内存空间;通过系统编译器内部指令设定在所述内存空间中预存储数据字节对齐;利用所述指定地址调用构造函数的接口函数设定所述内存空间的首地址为指定内存地址,在所述指定地址创建对象。在本专利技术实施例的第二方面,提供了一种终端装置,包括:定义模块,用于重定义对象内存分配函数的接口和指定地址调用构造函数的接口;申请模块,用于调用所述对象内存分配函数的接口函数申请预定大小的内存空间;对齐模块,用于通过系统编译器内部指令设定在所述内存空间中预存储数据字节对齐;设定模块,用于利用所述指定地址调用构造函数的接口函数设定所述内存空间的首地址为指定内存地址,在所述指定地址创建对象。本专利技术实施例的第三方面,提供了一种终端装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本专利技术实施例第一方面所述方法的步骤。本专利技术实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本专利技术实施例第一方面提供的所述方法的步骤。本专利技术实施例的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被一个或多个处理器执行时实现本专利技术实施例第一方面提供的所述方法的步骤。本专利技术实施例中,通过重定义内存分配接口和构造函数调用接口,申请内存后,设置该内存中存储数据字节对齐,然后指定对象创建的内存地址。使得对象的创建可以在指定的内存上进行,而且经过字节对齐后,可以减少CPU对内存的访问次数,从而提高数据读取即对象创建的效率。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的对象创建方法的一个实施例流程图;图2为本专利技术实施例提供的对象创建方法的另一个实施例流程图;图3为本专利技术实施例提供的对象创建终端装置的结构示意图;图4为本专利技术实施例提供的终端装置的结构示意图。具体实施方式本专利技术实施例提供了一种对象创建方法、终端装置及存储介质,用于提高对象创建效率。为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。实施例一:请参阅图1,本专利技术实施例提供的对象创建方法的流程示意图,包括以下步骤:S101、重定义对象内存分配函数的接口和指定地址调用构造函数的接口;所述对象内存分配函数用于为创建的对象分配内存空间,所述指定地址调用回调函数用于在指定的内存上,通过构造函数生成对象。一般在对象创建过程中,即通过new方法创建对象时,会先随机在系统内存为堆或栈区域对象分配内存空间,而后调用构造方法生成对象。在本专利技术实施例中,对象的内存空间为预先申请的,通过所述对象内存分配函数可以申请到预定大小的内存空间。优选的,所述对象内存分配函数的接口为operatornew函数接口,所述指定地址调用构造函数的接口为placementnew接口。S102、调用所述对象内存分配函数的接口申请预定大小的内存空间;通过所述对象内存分配函数申请内存空间后,返回一个内存指针,该内存指针指向申请的内存空间的首地址。具体的,调用所述operatornew函数申请预定大小的静态存储空间,并返回所述静态存储空间的内存地址。S103、通过系统编译器内部指令设定在所述内存空间中预存储数据字节对齐;所述字节对齐是指数据字节按照一定规则在内存空间上排列,为了使CPU可以对内存数据的快速访问,使存储数据的起始地址具有预定特征。如4个字节的int型数据,起始地址可以位于4字节的边界,即起始地址可以被4整除,在32位cpu下,假设一个整型变量的地址为0x00000004(为4的倍数),即属于对齐的,而如果其地址为0x00000002(非4的倍数)则是非对齐的。变量数据处于对齐位置时,可以一次被取出,提升读取效率。具体的,利用declspec命令和alignof命令,设置对齐的字节长度。对于预对齐数据类型、结构体或类计算自身的最大对齐值,通过与指定对齐值比较,取较小的值作为对齐的字节长度。S104、利用所述指定地址调用构造函数的接口函数设定所述内存空间的首地址为指定内存地址,在所述指定地址创建对象。所述指定地址调用构造函数的接口函数中包含有设定对象的创建地址的参数,将预先申请的内存地址作为创建地址,可实现指定地址的构造函数调用,所述构造函数用于创建对象时初始化对象,通过所述指定地址调用构造函数的接口函数,可完成指定地址的对象创建和初始化。具体的,调用placementnew函数在所述指定地址创建对象并进行对象初始化操作。上述步骤,通过预先申请内存,并设定内存中字节对齐,使得内存地址符POD特性(存储空间连续),减少内存碎片,在指定地址创建的对象效率可以得到有效提高。实施例二在图1的基础上,结合图2详述提高创建对象创建效率方法的具体过程,如下:S201、重定义operatornew函数和placementnew函数;在创建对象时,一般直接通过new操作符来生成对象,在new操作符中,包含有两个过程:分配内存和调用构造函数。new操作符中分配内存函数为operatornew,已分配内存中构造对象的函数为placementnew。由于对象创建过程的内存分配在程序编译期间既已完成,通过重定义operatornew函数和placementnew函数可以减少本文档来自技高网...

【技术保护点】
1.一种对象创建方法,其特征在于,包括:/n重定义对象内存分配函数的接口和指定地址调用构造函数的接口;/n调用所述对象内存分配函数的接口函数申请预定大小的内存空间;/n通过系统编译器内部指令设定在所述内存空间中预存储数据字节对齐;/n利用所述指定地址调用构造函数的接口函数设定所述内存空间的首地址为指定内存地址,在所述指定地址创建对象。/n

【技术特征摘要】
1.一种对象创建方法,其特征在于,包括:
重定义对象内存分配函数的接口和指定地址调用构造函数的接口;
调用所述对象内存分配函数的接口函数申请预定大小的内存空间;
通过系统编译器内部指令设定在所述内存空间中预存储数据字节对齐;
利用所述指定地址调用构造函数的接口函数设定所述内存空间的首地址为指定内存地址,在所述指定地址创建对象。


2.根据权利要求1所述的方法,其特征在于,所述对象内存分配函数的接口为operatornew函数接口,所述指定地址调用构造函数的接口为placementnew函数接口。


3.根据权利要求2所述的方法,其特征在于,所述对象内存分配函数的接口为operatornew函数接口还包括:
调用所述operatornew函数申请预定大小的静态存储空间,并返回所述静态存储空间的内存地址。


4.根据权利要求1所述的方法,其特征在于,所述通过系统编译器内部指令设定在所述内存空间中预存储数据字节对齐具体为:
利用declspec命令和alignof命令,设置对齐的字节长度。


5.根据权利要求1所述的方法,其特征在于,所述在所述指定地址创建对象具体为:
调用placementnew函数在所述指定地址创建对象并进行对象初始化操作。
...

【专利技术属性】
技术研发人员:黄浩
申请(专利权)人:武汉瓯越网视有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1