CN112100089B - 内存管理方法 - Google Patents
内存管理方法 Download PDFInfo
- Publication number
- CN112100089B CN112100089B CN202010753221.1A CN202010753221A CN112100089B CN 112100089 B CN112100089 B CN 112100089B CN 202010753221 A CN202010753221 A CN 202010753221A CN 112100089 B CN112100089 B CN 112100089B
- Authority
- CN
- China
- Prior art keywords
- memory
- module
- thread
- partition
- memory partition
- 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
Links
Classifications
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种内存管理方法,包括:根据模块当前的使用个数,确定内存分区的个数;根据模块的历史内存,确定每个模块的内存分区大小;将内存分区的地址与模块对应的线程ID进行绑定;接收内存申请函数;内存申请函数包括第一线程ID;查询第一线程ID是否对应内存分区的地址;当第一线程ID对应内存分区的地址时,确定目标内存分区,并在目标内存分区中申请内存。从而减少内存申请与释放不匹配导致的内存重复释放或者内存泄漏问题,保证了内存的安全使用。
Description
技术领域
本发明涉及内存技术领域,尤其涉及一种内存管理方法。
背景技术
随着无人车技术的快速发展,自动驾驶软件的复杂度也越来越高。自动驾驶软件一般采用C++语言开发,为了适应自动驾驶面临的复杂场景,其软件需要使用多种第三方算法或组件。因此,需要使用内存分配机制,对多种算法分配内存,传统的内存分配机制,一般为动态内存申请与释放机制(new与delete)。
但是,传统的内存分配机制对内存的使用限制较多,错误使用时会造成系统崩溃、数据被修改等严重安全问题。
首先,传统内存分配机制是基于内存块的管理。使用者需要自己负责内存的申请与释放。如果使用者忘记了释放,这块内存就会成为其他人无法申请的死内存,这就是常见的内存泄露问题。
其次,由于内存分配机制依赖的标识符是一个内存地址,使用者无从判断指针指向的内存是否已经被释放了。如果使用者两次释放了同一块内存,会造成内存管理模块的崩溃。
最后,由于内存分配机制依赖的标识符是一个内存地址,而释放内存时该内存地址仍然存在,因此如果在后面继续使用该地址指向的内存块,则会造成内存访问异常。对于内存管理模块来讲,这块内存已经被释放了,它就有可能被分配给其他模块使用。如果此时原来的使用者继续根据该指针进行操作,则会修改其他模块的数据。
因此,传统的内存分配机制难以满足内存模块隔离性与安全性的需要。可以通过下面两种方法来避免内存分配机制发生以上问题。
第一、申请释放记录。记录每一次申请与释放操作,通过匹配记录中的申请与释放关系,发现是否有内存未释放。
第二、避免使用动态内存分配。改造代码,避免使用动态内存申请,所需内存预先分配。
但是,对于第一种方法,只能发现内存泄露问题,不能避免内存两次释放问题。
对于第二种方法,会占用大量内存,复杂系统无法使用,且需要对现有算法代码进行改造,工作量巨大。
发明内容
本发明实施例的目的是提供一种内存管理方法,以解决现有技术中的内存泄漏或者占用大量内存,复杂系统无法使用的问题。
为解决上述问题,第一方面,本发明提供了一种内存管理方法,所述内存管理系统方法:
根据模块当前的使用个数,确定内存分区的个数;
根据所述模块的历史内存,确定每个模块的内存分区大小;
将所述内存分区的地址与模块对应的线程ID进行绑定;
接收内存申请函数;所述内存申请函数包括第一线程ID;
查询所述第一线程ID是否对应内存分区的地址;
当所述第一线程ID对应内存分区的地址时,确定目标内存分区,并在目标内存分区中申请内存。
在一种可能的实现方式中,所述方法还包括:
接收内存释放函数;所述内存释放函数包括第二线程ID;
查询所述第二线程ID是否对应内存分区;
当所述第二线程ID对应内存分区时,不执行内存释放操作。
在一种可能的实现方式中,所述方法还包括:
当模块结束时,根据所述模块对应的线程ID,确定线程ID对应的内存分区的地址,并释放所述内存分区。
在一种可能的实现方式中,所述根据模块的个数,确定内存分区的个数具体包括:
在调用模块时,通过malloc函数,在内存中为所述模块进行内存分配,得到所述模块的内存分区。
在一种可能的实现方式中,所述方法还包括:
当所述第一线程ID不对应内存分区的地址时,在标准内存管理模块进行内存申请。
在一种可能的实现方式中,所述模块为算法模块或者程序模块中的一种。
在一种可能的实现方式中,所述将所述内存分区的地址与模块对应的线程ID进行绑定之后,还包括:
将内存分区的地址与模块对应的线程ID的绑定关系存储在校验器中。
第二方面,本发明提供了一种设备,包括存储器和处理器,存储器用于存储程序,处理器用于执行第一方面任一所述的方法。
第三方面,本发明提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如第一方面任一所述的方法。
第四方面,本发明提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如第一方面任一所述的方法。
通过应用本发明实施例一提供的内存管理方法,以算法模块或程序模块为单位,得到内存分区,并通过校验器保存内存分区和模块对应的线程ID的对应关系。在内存申请时,根据算法模块或程序模块的线程ID,在内存分区中进行内存申请,在内存释放时,以算法模块或程序模块为单位,进行统一的内存释放,从而减少内存申请与释放不匹配导致的内存重复释放或者内存泄漏问题,保证了内存的安全使用。当将该内存管理方法应用在自动驾驶车辆中时,避免了自动驾驶车辆的软件系统中的动态内存误用导致的系统崩溃、数据被修改等故障,保证了自动驾驶车辆的安全行驶。
附图说明
图1为本发明实施例一提供的内存管理架构示意图;
图2为本发明实施例一提供的内存管理方法流程示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1为本发明实施例一提供的内存管理架构示意图,如图1所示,该内存管理架构包括内存分区管理模块、校验器和标准内存管理模块。
校验器中存储有线程ID和内存分区的绑定关系,当进行内存申请或释放时,如果线程ID已经和内存分区进行绑定,则通过内存分区管理模块进行内存管理,如果线程ID没有和内存分区进行绑定,则通过标准内存管理模块进行内存管理。
内存分区管理模块和标准内存管理模块都是对内存进行管理的模块,内存其中内存分区管理模块包括多个内存分区,比如内存分区1、内存分区2和内存分区3,每个内存分区对应一个算法模块,可以通过创建新的内存分区,在内存分区管理模块中增加新的内存分区,或者通过删除内存分区,删除内存分区管理模块中的内存分区,增加或者删除,都是以算法模块为标准,比如,算法模块增加时,新增内存分区,删除一个或几个算法模块时,删除这一个或几个算法模块的内存分区。
标准内存管理模块是对除内存分区管理模块外的其它内存进行管理。
图2为本发明实施例一提供的内存管理方法流程示意图,该方法应用在具有多个运算模块的设备中,比如安装有激光雷达、摄像头等各种传感器,且能进行对激光雷达、摄像头等感知数据进行处理的设备,此处的设备可以是安装有激光雷达和摄像头的无人驾驶车辆。本申请的执行主体为操作系统(Operating System,OS),如图2所示,本申请包括以下步骤:
步骤101,根据模块当前的使用个数,确定内存分区的个数;
在自动驾驶车辆中,自动驾驶车辆控制单元(Automated Vehicle Control Unit,AVCU)可以包括多个系统,比如感知系统、定位系统、决策系统、控制系统等,每个系统又包括多个算法模块,比如感知系统包括激光处理模块、图像处理模块、融合模块等,可以根据当前使用的模块的个数,确定内存分区的个数,比如,算法模块为20个,当前使用的为18个,则内存分区为18,可以依次记为内存分区1、内存分区2……内存分区18。随后通过malloc函数,在内存中为模块进行内存分配,得到模块的内存分区。
其中,模块可以是算法模块,即一个个独立的软件模块,也可以是程序模块,即可由汇编程序、编译程序、装入程序或翻译程序作为一个整体来处理的一级独立的、可识别的程序指令。可以根据内存管理针对的对象,确定模块为算法模块或者程序模块。下面以模块是算法模块为例,对本申请进行说明。
步骤102,根据模块的历史内存,确定每个模块的内存分区大小;
评估一个算法模块对内存的需求是该算法成立的必要条件,每个算法模块对内存有不同的需求,可以在测试时先分配一个较大的内存给算法模块,保证算法模块可以顺利执行,然后记录每一次调用new时的内存,将在一次运算中,多次调用new时的内存进行累加,可以得到算法模块对内存的需求量,该算法模块对内存的需求量,可以作为算法模块的内存分区大小。此处一次运算,以融合模块举例,融合模块将多个激光雷达的一个周期的数据进行融合,得到融合数据,此时可以作为一次运算。
步骤103,将内存分区的地址与模块对应的线程ID进行绑定;
具体的,一个算法模块,对应一个或多个线程,每个线程具有线程ID,将该算法模块的内存分区与一个或多个线程ID进行绑定,并将绑定关系存储在校验器中,此处,内存分区包括内存空间的指针,线程ID也就是线程PID。
可以通过特定的函数,获取线程ID。比如,用syscall(SYS_gettid)或pthread_self函数获取得到线程ID。
内存分区的地址与线程ID的绑定关系,可以存储在校验器中,以便于后续可以根据线程ID时,快速的确定该线程ID对应的算法模块是否已经申请内存分区,并在申请内存分区时,在算法模块运算过程中,在申请的内存分区上再申请内存,从而实现了以算法模块为单位,对内存分区的管理。此处的内存分区的地址,包括内存分区的起始指针。
步骤104,接收内存申请函数。
其中,内存申请函数包括第一线程ID。内存申请函数可以是new函数,当算法模块进行运算过程中,会通过new函数申请内存,以进行运算过程中产生的数据的存储。
步骤105,查询第一线程ID是否对应内存分区的地址;
具体的,在校验器中进行查询,判断校验器中是否存在第一线程ID和内存分区地址的绑定关系,当存在第一线程ID和内存分区地址的绑定关系时,执行步骤106。
当不存在第一线程ID和内存分区地址的绑定关系时,通过标准内存管理模块进行内存申请,其中,标准内存管理模块和内存分区管理模块一样,都是对内存进行管理的模块,不同的是内存分区管理模块是按照算法模块为单位,对内存进行分区,得到多个内存分区,而标准内存管理模块并未对内存进行分区处理。
步骤106,当第一线程ID对应内存分区的地址时,确定目标内存分区,并在目标内存分区中申请内存。
具体的,当第一线程ID在内存分区管理模块中有对应的内存分区时,确定第一线程对应的目标内存分区,并在目标内存分区中,进行内存申请。
进一步的,当算法模块在内存分区中申请内存后,在内存释放时,包括下列步骤:
首先,接收内存释放函数;内存释放函数包括第二线程ID;其次,查询第二线程ID是否对应内存分区;最后,当第二线程ID对应内存分区时,如果模块未结束,不执行内存释放操作。当模块结束时,根据模块对应的线程ID,确定线程ID对应的内存分区的地址,并释放内存分区。
具体的,当接收到内存释放函数delete时,先判断delete对应的算法模块是否已经结束,如果没有结束,则不执行释放内存的操作,如果已经结束,则直接根据内存释放函数的第二线程ID,释放对应的内存分区。其中,可以根据算法模块是否调用API接口,判断算法模块是否结束,当算法模块不再调用API接口时,可以确定算法模块已经结束。从而,实现了在算法模块结束后,一次性释放整个内存分区,而不是逐一对内存分区中的内存进行释放,从而避免了逐一释放内存所存在的内存泄漏问题以及两次释放同一内存所造成的内存管理崩溃问题。
通过应用本发明实施例一提供的内存管理方法,以算法模块或程序模块为单位,得到内存分区,并通过校验器保存内存分区和模块对应的线程ID的对应关系。在内存申请时,根据算法模块或程序模块的线程ID,在内存分区中进行内存申请,在内存释放时,以算法模块或程序模块为单位,进行统一的内存释放,从而减少内存申请与释放不匹配导致的内存重复释放或者内存泄漏问题,保证了内存的安全使用。当将该内存管理方法应用在自动驾驶车辆中时,避免了自动驾驶车辆的软件系统中的动态内存误用导致的系统崩溃、数据被修改等故障,保证了自动驾驶车辆的安全行驶。
发明实施例二提供了一种设备,包括存储器和处理器,存储器用于存储程序,存储器可通过总线与处理器连接。存储器可以是非易失存储器,例如硬盘驱动器和闪存,存储器中存储有软件程序和设备驱动程序。软件程序能够执行本发明实施例提供的上述方法的各种功能;设备驱动程序可以是网络和接口驱动程序。处理器用于执行软件程序,该软件程序被执行时,能够实现本发明实施例一提供的方法。
本发明实施例三提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行本发明实施例一提供的方法。
本发明实施例四提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现本发明实施例一提供的方法。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种内存管理方法,其特征在于,所述内存管理方法包括:
根据模块当前的使用个数,确定内存分区的个数;
根据所述模块的历史内存,确定每个模块的内存分区大小;
将所述内存分区的地址与模块对应的线程ID进行绑定;
接收内存申请函数;所述内存申请函数包括第一线程ID;
查询所述第一线程ID是否对应内存分区的地址;
当所述第一线程ID对应内存分区的地址时,确定目标内存分区,并在目标内存分区中申请内存。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收内存释放函数;所述内存释放函数包括第二线程ID;
查询所述第二线程ID是否对应内存分区;
当所述第二线程ID对应内存分区时,不执行内存释放操作。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当模块结束时,根据所述模块对应的线程ID,确定线程ID对应的内存分区的地址,并释放所述内存分区。
4.根据权利要求1所述的方法,其特征在于,所述根据模块当前的使用个数,确定内存分区的个数具体包括:
在调用模块时,通过malloc函数,在内存中为所述模块进行内存分配,得到所述模块的内存分区。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一线程ID不对应内存分区的地址时,在标准内存管理模块进行内存申请。
6.根据权利要求1所述的方法,其特征在于,所述模块为算法模块或者程序模块中的一种。
7.根据权利要求1所述的方法,其特征在于,所述将所述内存分区的地址与模块对应的线程ID进行绑定之后,还包括:
将内存分区的地址与模块对应的线程ID的绑定关系存储在校验器中。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法。
9.一种设备,其特征在于,所述设备包括存储器和处理器,所述存储器用于存储程序,所述处理器用于执行权利要求1-7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010753221.1A CN112100089B (zh) | 2020-07-30 | 2020-07-30 | 内存管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010753221.1A CN112100089B (zh) | 2020-07-30 | 2020-07-30 | 内存管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112100089A CN112100089A (zh) | 2020-12-18 |
CN112100089B true CN112100089B (zh) | 2023-08-01 |
Family
ID=73750546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010753221.1A Active CN112100089B (zh) | 2020-07-30 | 2020-07-30 | 内存管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100089B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1979428A (zh) * | 2005-12-08 | 2007-06-13 | 中兴通讯股份有限公司 | 自动释放嵌入式系统中应用程序模块泄漏内存的系统 |
CN1979429A (zh) * | 2005-12-08 | 2007-06-13 | 中兴通讯股份有限公司 | 自动释放嵌入式系统中应用程序模块泄漏内存的方法 |
CN102915276A (zh) * | 2012-09-25 | 2013-02-06 | 武汉邮电科学研究院 | 一种用于嵌入式系统的内存控制方法 |
CN104571953A (zh) * | 2014-12-25 | 2015-04-29 | 珠海金山网络游戏科技有限公司 | 一种扩展进程中内存地址控制的方法 |
CN111309289A (zh) * | 2019-11-19 | 2020-06-19 | 上海金融期货信息技术有限公司 | 一种内存池管理组件 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6990557B2 (en) * | 2002-06-04 | 2006-01-24 | Sandbridge Technologies, Inc. | Method and apparatus for multithreaded cache with cache eviction based on thread identifier |
-
2020
- 2020-07-30 CN CN202010753221.1A patent/CN112100089B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1979428A (zh) * | 2005-12-08 | 2007-06-13 | 中兴通讯股份有限公司 | 自动释放嵌入式系统中应用程序模块泄漏内存的系统 |
CN1979429A (zh) * | 2005-12-08 | 2007-06-13 | 中兴通讯股份有限公司 | 自动释放嵌入式系统中应用程序模块泄漏内存的方法 |
CN102915276A (zh) * | 2012-09-25 | 2013-02-06 | 武汉邮电科学研究院 | 一种用于嵌入式系统的内存控制方法 |
CN104571953A (zh) * | 2014-12-25 | 2015-04-29 | 珠海金山网络游戏科技有限公司 | 一种扩展进程中内存地址控制的方法 |
CN111309289A (zh) * | 2019-11-19 | 2020-06-19 | 上海金融期货信息技术有限公司 | 一种内存池管理组件 |
Non-Patent Citations (2)
Title |
---|
刘毅 ; 黄志刚 ; .嵌入式系统中内存管理中间件的研究与实现.计算机与数字工程.2006,176-179. * |
基于无线传感网络操作系统底层平台及内存管理的研究;吴福青;中国优秀硕士学位论文全文数据库 信息科技辑;I138-561 * |
Also Published As
Publication number | Publication date |
---|---|
CN112100089A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100306456B1 (ko) | 오퍼레이팅시스템의재기동방법 | |
US7895394B2 (en) | Storage system | |
KR101729097B1 (ko) | 복수의 가상 머신에서 수행되는 응용 프로그램들간 참조 데이터를 공유하는 방법 및 이를 위한 참조 데이터 관리 장치 및 시스템 | |
CN109710317B (zh) | 系统启动方法、装置、电子设备及存储介质 | |
CN106708608B (zh) | 一种分布式锁服务方法、获取方法及相应装置 | |
CN110716845A (zh) | 一种Android系统的日志信息读取的方法 | |
US20230266958A1 (en) | Method for creating private image in public cloud and related device | |
US20240095174A1 (en) | Method for detecting error of operating system kernel memory in real time | |
CN108345452B (zh) | 一种线程管理方法及装置 | |
US9021492B2 (en) | Dual mode reader writer lock | |
CN112100089B (zh) | 内存管理方法 | |
CN110795304B (zh) | 分布式存储系统性能测试的方法及装置 | |
US20150378799A1 (en) | Automatic memory leak detection | |
US8689230B2 (en) | Determination of running status of logical processor | |
CN115729702A (zh) | 应用程序内存配置方法、电子设备、计算机存储介质 | |
US11972293B2 (en) | Data structure, memory means and device | |
US9418175B2 (en) | Enumeration of a concurrent data structure | |
CN110471623B (zh) | 硬盘文件写入方法、装置、计算机设备和存储介质 | |
KR20170037851A (ko) | 매니코어 시스템을 작동하기 위한 방법 및 장치 | |
KR102456017B1 (ko) | 응용 프로그램간 파일 공유 장치 및 방법 | |
CN113157513B (zh) | 一种堆内存破坏检测方法、装置、电子设备及存储介质 | |
KR102275181B1 (ko) | 멀티코어 프로세서 시스템에서 메모리 할당 방법 및 장치, 이를 위한 기록매체 | |
CN117692416B (zh) | 网络报文处理方法、装置、计算机设备和存储介质 | |
US12032970B2 (en) | Reducing the startup latency of functions in a FaaS infrastructure | |
US20230176900A9 (en) | Reducing the startup latency of functions in a faas infrastructure |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220302 Address after: 401122 No.1, 1st floor, building 3, No.21 Yunzhu Road, Yubei District, Chongqing Applicant after: Chongqing landshipu Information Technology Co.,Ltd. Address before: B4-006, maker Plaza, 338 East Street, Huilongguan town, Changping District, Beijing 100096 Applicant before: Beijing Idriverplus Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |