一种指针管理方法及装置制造方法及图纸

技术编号:14424825 阅读:138 留言:0更新日期:2017-01-13 03:29
本发明专利技术适用于软件领域,提供了一种指针管理方法及装置,所述方法包括:在具有智能指针的模块传递智能指针至不具有智能指针的模块时,通知所述具有智能指针的模块取消对传递的智能指针的管理;将所述传递的智能指针转换为普通指针;在不具有智能指针的模块存在对已转为普通指针的智能指针的操作时,根据所述对已转为普通指针的智能指针的操作的类型进行相应的操作。本发明专利技术实施例能够降低由于指针类型不同所引起的出错的概率。

【技术实现步骤摘要】

本专利技术实施例属于软件领域,尤其涉及一种指针管理方法及装置
技术介绍
指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向存在存储器中另一个地方的值。当类中有指针成员时,一般通过以下两种方式管理类中的指针成员:(1)采用值型的方式管理:每个类对象都保留一份指针指向的对象的拷贝;(2)采用智能指针的方式进行管理:使用引用计数,将一个计数器与类指向的对象相关联,以跟踪该类有多少个对象的指针指向同一个对象。当只采用智能指针的系统通过应用程序编程接口(ApplicationProgrammingInterface,API)与采用值型指针(即普通指针)的代码的API交互时,由于智能指针传给采用普通指针的代码的API后,智能指针将变为普通指针,而普通指针不具备计数功能,因此,智能指针传给采用普通指针的代码的API后极可能引起指针计数以及指针释放的混乱的问题。例如,在android系统提供的类的API中,几乎没有原生普通指针,使用的都是智能指针。但是采用C语言开发的开源代码中并不存在智能指针,由于开源代码的API使用的都是普通指针,完全没有智能指针,因此,在把开源代码集成进android系统中时,需要android系统的系统框架层传入很多信息给开源代码的API,其中包括,android创建的属于智能指针的窗口指针等,由于智能指针在传给开源播放器之后变成普通指针,因此可能会引起对指针的操作出错(如指针计数出错)的问题。
技术实现思路
本专利技术实施例提供了一种指针管理方法及装置,旨在解决现有系统在交互时,由于指针类型不同而引起的对指针的操作出错的问题。本专利技术实施例是这样实现的,一种指针管理方法,所述方法包括:在具有智能指针的模块传递智能指针至不具有智能指针的模块时,通知所述具有智能指针的模块取消对传递的智能指针的管理;将所述传递的智能指针转换为普通指针;在不具有智能指针的模块存在对已转为普通指针的智能指针的操作时,根据所述对已转为普通指针的智能指针的操作的类型进行相应的操作。本专利技术实施例的另一目的在于提供一种指针管理装置,所述装置包括:取消指针管理通知单元,用于在具有智能指针的模块传递智能指针至不具有智能指针的模块时,通知所述具有智能指针的模块取消对传递的智能指针的管理;指针转换单元,用于将所述传递的智能指针转换为普通指针;指针响应单元,用于在不具有智能指针的模块存在对已转为普通指针的智能指针的操作时,根据所述对已转为普通指针的智能指针的操作的类型进行相应的操作。在本专利技术实施例中,由于在具有智能指针的模块传递智能指针至不具有智能指针的模块时,通知具有智能指针的模块取消对传递的智能指针的管理,因此,能够避免引起指针计数的混乱,并且,由于不具有智能指针的模块是对转换为普通指针的智能指针执行操作,因此,使得具有智能指针的模块能够更好地与不具有智能指针的模块进行交互,降低由于指针类型不同所引起的出错的概率,此外,指针管理模块根据不具有智能指针的模块对已转为普通指针的智能指针的操作的类型进行相应的操作能够提高响应的精确度。附图说明图1是本专利技术第一实施例提供的一种指针管理方法的流程图;图2是本专利技术第二实施例提供的一种指针管理装置的结构图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术实施例中,在具有智能指针的模块传递智能指针至不具有智能指针的模块时,通知所述具有智能指针的模块取消对传递的智能指针的管理,并将所述传递的智能指针转换为普通指针,在不具有智能指针的模块存在对已转为普通指针的智能指针的操作时,根据所述对已转为普通指针的智能指针的操作的类型进行相应的操作。为了说明本专利技术所述的技术方案,下面通过具体实施例来进行说明。实施例一:图1示出了本专利技术第一实施例提供的一种指针管理方法的流程图,详述如下:步骤S11,在具有智能指针的模块传递智能指针至不具有智能指针的模块时,通知所述具有智能指针的模块取消对传递的智能指针的管理。其中,具有智能指针的模块是指只具有智能指针,不具有普通指针的模块;不具有智能指针的模块是指只具有普通指针,不具有智能指针的模块。在该步骤中,在不具有智能指针的模块的代码中注册指针管理模块,该指针管理模块在具有智能指针的模块传递智能指针至不具有智能指针的模块时,通知所述具有智能指针的模块取消对传递的智能指针的管理。其中,这里取消对智能指针的管理包括:取消对智能指针的计数统计、释放操作等。由于取消对智能指针的计数统计,因此能够避免智能指针的计数混乱。可选地,所述通知所述具有智能指针的模块取消对传递的智能指针的管理,具体包括:A1、查询新建的智能指针链表是否已存储传递的智能指针的信息。A2、在新建的智能指针链表已存储传递的智能指针的信息时,通知所述具有智能指针的模块取消对传递的智能指针的管理。A3、在新建的智能指针链表没有存储传递的智能指针的信息时,则将所述传递的智能指针的信息存入新建的智能指针链表,并通知所述具有智能指针的模块取消对传递的智能指针的管理。上述A1~A3中,指针管理模块首先新建一智能指针链表,在具有智能指针的模块传递智能指针至不具有智能指针的模块时,指针管理模块查询智能指针链表中是否已存储传递的智能指针的信息,若没有存储,则将该传递的智能指针的信息存入智能指针链表,并通知具有智能指针的模块取消对传递的智能指针的管理,否则,只需通知具有智能指针的模块取消对传递的智能指针的管理即可。其中,智能指针的信息包括智能指针的标识、智能指针的值等。步骤S12,将所述传递的智能指针转换为普通指针。该步骤中,将智能指针链表中存入的智能指针转换为普通指针,以便具有智能指针的模块能够更好地与不具有智能指针的模块进行交互。具体地,所述将所述传递的智能指针转换为普通指针,包括:B1、将所述传递的智能指针的类型转换为普通指针的类型。具体地,将智能指针的类型转换为普通指针的类型,比如void*类型,该void*类型的指针对各种类型的指针都是可以适用的。B2、将所述传递的智能指针的值赋给所述已转为普通指针的类型的指针,并与所述传递的智能指针对应存储在所述智能指针链表中。具体地,将智能指针的值赋给其转化的普通指针,并将具有智能指针的值的普通指针与该智能指针对应存储在智能指针链表中。智能指针链表中,每个节点包括一个智能指针和一个对应转换的普通指针。步骤S13,在不具有智能指针的模块存在对已转为普通指针的智能指针的操作时,根据所述对已转为普通指针的智能指针的操作的类型进行相应的操作。该步骤中,对已转为普通指针的智能指针的操作的类型包括主动释放普通指针的类型和代码执行结束释放普通指针的类型。其中,主动释放普通指针的类型是指不具有智能指针的模块的代码要求释放普通指针的类型,比如代码中要求释放智能指针链表中的某个普通指针,此时,对已转为普通指针的智能指针的操作的类型为主动释放普通指针的类型;代码执行结束释放普通指针的类型是指不具有智能指针的模块的代码没有要求释放普通指针,但在代码执行结束后,需要释放资源对应的释放普通指针的类型。可选地,所述在不具有智能指针的模块存在对本文档来自技高网...
一种指针管理方法及装置

【技术保护点】
一种指针管理方法,其特征在于,所述方法包括:在具有智能指针的模块传递智能指针至不具有智能指针的模块时,通知所述具有智能指针的模块取消对传递的智能指针的管理;将所述传递的智能指针转换为普通指针;在不具有智能指针的模块存在对已转为普通指针的智能指针的操作时,根据所述对已转为普通指针的智能指针的操作的类型进行相应的操作。

【技术特征摘要】
1.一种指针管理方法,其特征在于,所述方法包括:在具有智能指针的模块传递智能指针至不具有智能指针的模块时,通知所述具有智能指针的模块取消对传递的智能指针的管理;将所述传递的智能指针转换为普通指针;在不具有智能指针的模块存在对已转为普通指针的智能指针的操作时,根据所述对已转为普通指针的智能指针的操作的类型进行相应的操作。2.根据权利要求1所述的方法,其特征在于,所述通知所述具有智能指针的模块取消对传递的智能指针的管理,具体包括:查询新建的智能指针链表是否已存储传递的智能指针的信息;在新建的智能指针链表已存储传递的智能指针的信息时,通知所述具有智能指针的模块取消对传递的智能指针的管理;在新建的智能指针链表没有存储传递的智能指针的信息时,则将所述传递的智能指针的信息存入新建的智能指针链表,并通知所述具有智能指针的模块取消对传递的智能指针的管理。3.根据权利要求2所述的方法,其特征在于,所述将所述传递的智能指针转换为普通指针,具体包括:将所述传递的智能指针的类型转换为普通指针的类型;将所述传递的智能指针的值赋给所述已转为普通指针的类型的指针,并与所述传递的智能指针对应存储在所述智能指针链表中。4.根据权利要求3所述的方法,其特征在于,所述在不具有智能指针的模块存在对已转为普通指针的智能指针的操作时,根据所述对已转为普通指针的智能指针的操作的类型进行相应的操作,具体包括:在不具有智能指针的模块存在对已转为普通指针的智能指针的操作时,若所述对已转为普通指针的智能指针的操作的类型为主动释放普通指针的类型,
\t则在智能指针链表中查找所述普通指针,并删除包括所述普通指针的节点;若所述对已转为普通指针的智能指针的操作的类型为代码执行结束释放普通指针的类型,则对智能指针链表中所有节点的普通指针进行释放,并删除智能指针链表中的所有节点。5.根据权利要求4所述的方法,其特征在于,所述具有智能指针的模块为Android系统,不具有智能指针的模块为开源代码对应的模块。6.一种指针管理装置,其特...

【专利技术属性】
技术研发人员:李潘潘吴明毅
申请(专利权)人:TCL集团股份有限公司
类型:发明
国别省市:广东;44

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

1