malloc(malloc()和calloc()有啥区别)

2024-09-13 18:20:27 :21

malloc(malloc()和calloc()有啥区别)

本文目录

malloc()和calloc()有啥区别

malloc()和calloc()的区别:

malloc()和calloc()的功能都是在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针。

而他们之间的区别就是calloc在动态分配完内存数禅后,自动初薯好始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据。比如说在内存中分配长度为10的int类型的数组,若使薯手尘用的是函数calloc(),则数组被初始化为10个0,若是使用malloc()函数,则数组里面存的是垃圾数据。

扩展资料:

    malloc()在内存中分配内存的工作机制:

malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。

调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。

然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。

接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上。调用free函数时,它将用户释放的内存块连接到空闲链上。

到最后,空闲链会被切成很多的小内存片段,如果这时用户申请一个大的内存片段,那么空闲链上可能没有可以满足用户要求的片段了。

于是,malloc函数请求延时,并开始在空闲链上翻箱倒柜地检查各内存片段,对它们进行整理,将相邻的小空闲块合并成较大的内存块。

如果无法获得符合要求的内存块,malloc函数会返回NULL指针,因此在调用malloc动态申请内存块时,一定要进行返回值的判断。 

参考资料:

百度百科-malloc()

百度百科-calloc()

c语言中malloc是什么怎么用

malloc() 函数用来动态地分配内存空间,其原型为:void* malloc (size_t size);

说明:

【参数说明】

size 为需要分配的内存空间的大小,以字节(Byte)计。

【函数说明】

malloc() 在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。如果希望在分配内存的同时进行初始化,请使用 calloc()() 函数。

【返回值】

分配成功返回指向该内存的地址,失败则返回 NULL。

操作:

由于申请内存空间时可能有也可能没有,所以需要自行判断是否申请成功,再进行后续操作。

如果 size 的值为 0,那么返回值会因标准库实现的不同而不同,可能是 NULL,也可能不是,但返回的指针不应该再次被引用。

注意:函数的返回值类型是 void *,void 并不是说没有返回值或者返回空指针,而是返回的指针类型未知。所以在使用 malloc() 时通常需要进行强制类型转换,将 void 指针转换成我们希望的类型,例如:

#include《stdlib.h》

typedef int ListData;

ListData *data;  //存储空间基址

data = ( ListData * ) malloc( 100 * sizeof ( ListData ) );

扩展资料

实现malloc的方法:

(1)数据结构 

首先我们要确定所采用的数据结构。一个简单可行方案是将堆内存空间以块的形式组织起来,每个块由meta区和数据区组成,meta区记录数据块的元信息(数据区大小、空闲标志位、指针等等)。

数据区是真实分配的内存区域,并且数据区的第一个字节地址即为malloc返回的地址 。

(2)寻找合适的block 

现在考虑如何在block链中查找合适的block。一般来说有两种查找算法: 

First fit:从头开始,使用第一个数据区大小大于要求size的块所谓此次分配的块 

Best fit:从头开始,遍历所有块,使用数据区大小大于size且差值最小的块作为此次分配的块 

两种方式各有千秋,best fit有较高的内存使用率(payload较高),而first fit具有较高的运行效率。这里我们采用first fit算法。

(3)开辟新的block 如果现有block都不能满足size的要求,则需要在链表最后开辟一个新的block。

(4)分裂block First fit有一个比较致命的缺点,就是可能会让更小的size占据很大的一块block,此时,为了提高payload,应该在剩余数据区足够大的情况下,将其分裂为一个新的block。

(5)malloc的实现 

有了上面的代码,我们就可以实现一个简单的malloc.注意首先我们要定义个block链表的头first_block,初始化为NULL;另外,我们需要剩余空间至少有BLOCK_SIZE+8才执行分裂操作 

由于我们需要malloc分配的数据区是按8字节对齐,所以size不为8的倍数时,我们需要将size调整为大于size的最小的8的倍数。

malloc怎么使用,请举例说明,谢谢!

malloc使用须要包括头文件:

#include ’stdlib.h’

例如:

int *p;

p = new int;  /返回类型为int* 类型(整数型指针)。分配大小为 sizeof(int);

或:

int* parr;

parr = new int ;   //返回类型为 int* 类型(整数型指针)。分配大小为 sizeof(int) * 100;

而 malloc 则必猜察须由我们计算要字节数,而且在返回后强行转换为实际类型的枣高指针。

int* p;

p = (int *) malloc (sizeof(int));

扩展资料:

malloc 函数返回的是 void * 类型。

对于C++,如果你写成:p = malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将 void* 赋值给 int * 类型变量”。

所以必须通过 (int *) 来将强制转换。而对于C,没有这个要求,但为了使C程序更方便的移植到C++中来,养成强制转换的习惯。

在Linux中可以有这样:malloc(0),这是因为Linux中malloc有一个下限值16Bytes,注意malloc(-1)是禁止的;但是在某些系统中是不允许malloc(0)的。

在规范的程序中我们有必要按照这样的格穗岩茄式去使用malloc及free:

type *p;

if(NULL == (p = (type*)malloc(sizeof(type))))

/*请使用if来判断,这是有必要的*/

{

perror("error...");

exit(1);

}

.../*其它代码*/

free(p);

p = NULL;/*请加上这句*/

malloc函数实现的功能是什么

malloc 原型:extern void *malloc(unsigned int num_bytes); 用法:#include 《malloc.h》 或#include《stdlib.h》 功能:分配长度为num_bytes字节的内存块 说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 当内存不再使用时,应使用free()函数将内存块释放。 malloc的语法是:指针名=(数据类型*)malloc(长度),(数据类型*)表示指针.malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整凯茄形数,返回值是一个指向所分配的连续存储域的起始地址的指针。 动态内存分配就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内段租存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。本文简单介绍动态内存分配函数malloc()及几种实现方法。 1. 简介 malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。还有一点必须注意的是,当函数未能成功分配存储空间(如内存不足)就会返回一个NULL指针。所以在调用该函数时应该检测返回值是否为NULL并执行相应的操作。 2. 函数说明 C语言的动态存储管理由一组标准库函数实现,其原型在标准文件《stdlib.h》里描述,需要用这些功能时应包含这个文件。与动态存储分配有关的函数共有四个,其中就包括存储分配函数malloc()。函数原型是:void *malloc (size_t n);这里的size_t是标准库里定义的一个类型,它是一个无符号整型。这个整型能够满足所有对存储块大小描述的需要,具体相当于哪个整型由具体的C系统确定。malloc的返回值为(void *)类型(这是通用指针的一个重要用途),它分配一片能存放大小为n的数据的存储块,返回对应的指针值;如果不能满足申请(找不到能满足要求的存储块)就返回握孙兆NULL。在使用时,应该把malloc的返回值转换到特定指针类型,赋给一个指针。 注意,虽然这里的存储块是通过动态分配得到的,但是它的大小也是确定的,同样不允许越界使用。例如上面程序段分配的块里能存n个双精度数据,随后的使用就必须在这个范围内进行。越界使用动态分配的存储块,尤其是越界赋值,可能引起非常严重的后果,通常会破坏程序的运行系统,可能造成本程序或者整个计算机系统垮台。 下例是一个动态分配的例子: #include 《stdio.h》 #include《stdlib.h》 main() { int count,*array; /*count是一个计数器,array是一个整型指针,也可以理解为指向一个整型数组的首地址*/ count=100; if((array=(int *)malloc(10*sizeof(int))) == NULL) { printf("不能成功分配存储空间。"); exit(1); } for(count=0;count《10;count++) /*给数组赋值*/ array); } 上例中动态分配了10个整型存储区域,然后进行赋值并打印。例中if((array=(int *) malloc (10*sizeof(int)))==NULL)语句可以分为以下几步: 1)分配10个整型的连续存储空间,并返回一个指向其起始地址的整型指针 2)把此整型指针地址赋给array 3)检测返回值是否为NULL

C语言的malloc函数有什么用

1、这个涉及两个存储区域,堆和栈,用malloc申请的空间在堆上,chara这个是在栈上。堆和栈最重要一个区别是,栈是系统管理的的,他负责回收和释放,所以有个概念叫作用域,变量的作用域一结束,栈就回收变量的资源。但是堆是程序员管理的,程序员不释放,除非进程结束,这个空间就一直在那,就有了一定灵活性。2、当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,即malloc函数。malloc函数原型:externvoid*malloc(unsignedintnum_bytes);头文件:#include功能:分配长度为num_bytes字节的内存块返回值:如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针null。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。说明:关于该函数的原型,在以前malloc返回的是char型指针,新的ansic标准规定,该函数返回为void型指针,因此必要时要进行类型转换。

C语言 关于malloc的用法

malloc是分配动态数组存储空间的函数,引用它必需包含头文件"malloc.h"或"stdlib.h",malloc的作用是分配指定字节个内存空间,并返回该内存空间的首地址,但在赋值前必需进行强制类型转换。至于之后p其实就可以作为普通数组进行使用了,你的程序中少了free(p);,要将malloc的空间进行释放。

malloc函数怎么使用

size仅仅为申请内存字节大小,与申请内存块中存储的数据类型无关,故编程时需要通过以下方式给出:"长度 * sizeof(数据类型)"。

具体使用及编写方式如下图:

//动态分配内存,输入5个数据,并把低于60的值打印出来:

扩展资料:

关腔高于函数使用需要注意的一些地方:

1、申请了内存空颤春间后,必须检查是否分配成功。

2、当不需要再使用申请的内存时,记得释放;释放后应该把指向这块内存的指针指向NULL,防止程序后面不小心使用了它。

3、这两个函数应该是配对。如果申请后不释放就是内存泄露;如果无故释放那就是什么也没有做伍洞尺。释放只能一次,如果释放两次及两次以上会出现错误(释放空指针例外,释放空指针其实也等于啥也没做,所以释放空指针释放多少次都没有问题)。

4、虽然malloc()函数的类型是(void *),任何类型的指针都可以转换成(void *),但是最好还是在前面进行强制类型转换,因为这样可以躲过一。

百度百科-malloc函数

如何实现一个malloc

实现一个malloc:在实现malloc之前,先要相对正式地对malloc做一个定义。根据标准C库函数的定义,malloc具有如下原型:void* malloc(size_t size);这个函数要实现的功能是在系统中分配一段连续的可用的内存,具体有如下要求:malloc分配的内存大小至少为size参数所指定的字节数malloc的返回值是一个指针,指向一段可用内存的起始地址多次调用malloc所分配的地址不能有重叠部分,除非某次malloc所分配的地址被释放掉malloc应该尽快完成内存分配并返回(不能使用NP-hard的内存分配算法)实现malloc时应同时实现内存大小调整和内存释放函数(即realloc和free)对于malloc更多的说明可以在命令行中键入以下命令查看:1.man malloc2 .预备知识在实现malloc之前,需要先解释一些Linux系统内存相关的知识。2.1 Linux内存管理2.1.1 虚拟内存地址与物理内存地址为了简单,现代操作系统在处理内存地址时,普遍采用虚拟内存地址技术。即在汇编程序(或机器语言)层面,当涉及内存地址时,都是使用虚拟内存地址。采用这种技术时,每个进程仿佛自己独享一片2N字节的内存,其中N是机器位数。例如在64位CPU和64位操作系统下,每个进程的虚拟地址空间为264Byte。这种虚拟地址空间的作用主要是简化程序的编写及方便操作系统对进程间内存的隔离管理,真实中的进程不太可能(也用不到)如此大的内存空间,实际能用到的内存取决于物理内存大小。由于在机器语言层面都是采用虚拟地址,当实际的机器码程序涉及到内存操作时,需要根据当前进程运行的实际上下文将虚拟地址转换为物理内存地址,才能实现对真实内存数据的操作。这个转换一般由一个叫MMU(Memory Management Unit)的硬件完成。

实用数据结构malloc(m)含义

在C语言中,malloc(m)用于动态分配内存空间,其中m表示需要分配的字节数。它会在内存的堆区中分配一块大小为m字节的连续空间,并返回该空间的首地址。如果分配成功,返回的地址可以用指针变量来接收并使用。例如,若想分配4个int类型的空间,则可以使用int *p = (int*)malloc(4*sizeof(int))。这里4*sizeof(int)表示需要分配4个int类型所占用的字节数。如果分配成功,p将指向分配的内存空间的首地址,即第一个int类型的位置。可以通过指针来访问和修改这个内存空间中的值。使用完malloc分配的内存空间后,需要使用free()函数将其释放,以便其他程序可以使用这个内存空间。否则会造成内存泄漏问题。例如,可以使用free(p)来释放刚刚分配的内存空间。

malloc是什么意思呢怎么用

  1. malloc函数向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。

  2. 函数声明:void *malloc(size_t size),void* 表示未确定类型的指针,void *可以指向任何类型的数据,更明确的说是指申请内存空间时还不知道用户是用这段空间来存储什么类型的数据。

  3. malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上。

malloc(malloc()和calloc()有啥区别)

本文编辑:admin
: malloc,

更多文章:


指纹识别算法(每个人的指纹都是独一无二的,手机是如何识别的)

指纹识别算法(每个人的指纹都是独一无二的,手机是如何识别的)

本文目录每个人的指纹都是独一无二的,手机是如何识别的怎样识别指纹指纹识别有哪几种指纹识别是怎么进行的指纹识别模块工作的原理是什么指纹识别技术的算法指纹识别的原理是什么每个人的指纹都是独一无二的,手机是如何识别的指纹识别主要包括以下步骤:指纹

2024年10月16日 09:00

小米智能门锁安装预约(活体指纹识别,电子离合锁体!小米米家智能门锁青春版体验)

小米智能门锁安装预约(活体指纹识别,电子离合锁体!小米米家智能门锁青春版体验)

活体指纹识别,电子离合锁体!小米米家智能门锁青春版体验最近小米又推出了一款新门锁小米米家智能门锁青春版,很荣幸在产品发售之初就能在第一时间体验到这款新品,下面我就为大家详细展示这款小米新门锁,希望对想要购买的朋友有所帮助。首先是开箱环节,小

2024年12月22日 00:00

安全激光扫描仪原理(请问三维激光扫描仪的工作原理是什么)

安全激光扫描仪原理(请问三维激光扫描仪的工作原理是什么)

请问三维激光扫描仪的工作原理是什么原理比较简单,事实上和全息照片有着相同的原理,首先,需要将激光分成两束,一束光照射物件,一束直接照到底片上,使感光原件感光。从这是利用了从物体后部反射的激光束与物体前部反射的激光束所走过的距离不同,因此与直

2024年12月14日 17:10

opporeno4se摄像头参数(OPPOReno4SE和华为畅享20哪个更值得入手-参数对比)

opporeno4se摄像头参数(OPPOReno4SE和华为畅享20哪个更值得入手-参数对比)

本文目录OPPOReno4SE和华为畅享20哪个更值得入手-参数对比OPPOReno4SE拍照怎么样-OPPOReno4SE相机评测荣耀30s和OPPOReno4SE哪个好值得入手-参数对比OPPOReno4SE和华为畅享20哪个更值得入手

2024年11月10日 07:40

中央隐藏夏朝是古埃及(中科大教授:已证实夏朝就是古埃及,国外网友的评论却令人诧异)

中央隐藏夏朝是古埃及(中科大教授:已证实夏朝就是古埃及,国外网友的评论却令人诧异)

本文目录中科大教授:已证实夏朝就是古埃及,国外网友的评论却令人诧异古埃及是中国的夏朝吗这个有什么历史依据吗中国历史上夏朝是否存在夏朝真的是从古埃东迁而来的吗夏朝可能是古埃及吗:并没有证据证明埃及对二里头文化有影响中国教授:夏朝不属于中国,是

2024年9月13日 23:30

索尼a7m4创意外观设置(a7m4红眼消除设置)

索尼a7m4创意外观设置(a7m4红眼消除设置)

a7m4红眼消除设置点击即可消除。首先在照片右上角点击,然后点击左上角有一个去红眼的按钮,再把人物的眼睛放大,点击眼睛,即可消除红眼。a7m4简介索尼A7IV(也叫a7m4)是索尼中国于2021年10月21日发布的全画幅微单产品。索尼a7m

2025年1月8日 15:00

qx9650配什么主板(技嘉G41可以上QX9650吗)

qx9650配什么主板(技嘉G41可以上QX9650吗)

本文目录技嘉G41可以上QX9650吗QX9650 配什么主板和内存比较好超技嘉G41可以上QX9650吗G41是无法使用QX9650的,技嘉的G41系列可以使用Q系列CPU但是无法带动QX系列极致版CPU,原因为主板只有4pin的CPU供

2024年5月31日 16:50

二手快门5000算新吗(朋友出售60D佳能60D相机5000快门 5000值吗太不懂二手价)

二手快门5000算新吗(朋友出售60D佳能60D相机5000快门 5000值吗太不懂二手价)

二手快门8000算新吗二手快门8000算新,相机快门4000算几成新相机快门4000算八成新,买了一个二手的相机6千多次的快门数算不算多6000多的快门……绝对数不多,二手尼康D80到底值不值买快门5000左右,还不如先买个60D 18-1

2024年3月11日 12:00

苹果客服如何转人工(苹果人工客服怎么转人工)

苹果客服如何转人工(苹果人工客服怎么转人工)

本文目录苹果人工客服怎么转人工苹果电话怎么转人工apple人工客服怎么转苹果人工客服怎么转人工苹果人工客服转人工的方法如下:操作环境:小米11、MIUI13、微信最新版本等。1、打开微信,点击搜索,如下图所示:2、在上方搜索框中搜索苹果客服

2024年5月14日 14:30

邮箱注册申请(如何注册新邮箱)

邮箱注册申请(如何注册新邮箱)

本文目录如何注册新邮箱怎么邮箱注册怎样申请个人邮箱电子邮箱怎么申请注册邮箱怎么注册 有什么方法如何申请邮箱免费注册电子邮件注册网站是什么电子邮件如何免费注册怎么申请一个163邮箱如何注册163免费电子邮箱如何注册新邮箱邮箱注册,您可以按照以

2024年11月10日 15:10

logic跟logicx的差别?gprox有线耳机可以插手机上吗

logic跟logicx的差别?gprox有线耳机可以插手机上吗

本文目录logic跟logicx的差别gprox有线耳机可以插手机上吗prox是什么意思final cut pro x是什么软件logicprox快捷键为啥使用不了Surface Pro 8 和Surface Pro X 有什么区别logi

2024年9月22日 01:50

如何解三星w799密码锁(三星手机sch-w799怎么恢复出厂价)

如何解三星w799密码锁(三星手机sch-w799怎么恢复出厂价)

本文目录三星手机sch-w799怎么恢复出厂价求助三星w799手机键盘锁解锁三星w799密码锁如何清除三星手机sch-w799怎么恢复出厂价手机恢复出厂设置方法:1.备份手机中重要数据,联系人、信息、照片、备忘录等。2.设定--重置/备份与

2024年10月26日 05:30

红米redmi4x参数(红米mae136是什么手机)

红米redmi4x参数(红米mae136是什么手机)

红米note4x和红米redmi4x屏幕一样吗红米note4x和红米redmi4x屏幕的参数是不一样的红米note4x和红米redmi4x的对比图红米note4x屏幕参数:触摸屏类型                            

2024年3月14日 19:30

谷歌手机是哪国的(谷歌生产的手机是不是外国品牌)

谷歌手机是哪国的(谷歌生产的手机是不是外国品牌)

本文目录谷歌生产的手机是不是外国品牌谷歌是什么手机以下手机品牌分别是哪个国家的谷歌也是一种手机牌子么谷歌是哪国的谷歌手机是国产的嘛…谷歌生产的手机是不是外国品牌美国品牌、谷歌2005年购买了一个名为Android的公司,但是这家子公司的开发

2024年5月17日 21:40

安卓玩机技术社区app(搞机软件app推荐)

安卓玩机技术社区app(搞机软件app推荐)

本文目录搞机软件app推荐玩机公社什么软件玩机技巧应用安卓手机论坛有哪些搞机软件app推荐1、安兔兔评测安兔兔评测能够检测手机、平板、智能电视等设备的硬件性能。全球累积用户已超2亿,支持英语、法语、西班牙语、俄语等13个语言版本。支持安卓、

2024年9月4日 16:20

qq拼音输入法苹果版(ipad怎么下载qq输入法)

qq拼音输入法苹果版(ipad怎么下载qq输入法)

本文目录ipad怎么下载qq输入法苹果笔记本支持qq输入法吗苹果14能用qq输入法吗苹果什么输入法好用苹果手机qq没有键盘怎么设置苹果手机上的qq输入法怎么恢复默认词库IPHONE如何下载QQ拼音输入法iPhone如何安装qq输入法苹果手机

2024年10月6日 02:10

上海华硕电脑专卖店在哪里(华硕官方正规授权的笔记本电脑专卖店,我的地址在上海南桥镇!)

上海华硕电脑专卖店在哪里(华硕官方正规授权的笔记本电脑专卖店,我的地址在上海南桥镇!)

本文目录华硕官方正规授权的笔记本电脑专卖店,我的地址在上海南桥镇!上海闵行辛庄工业区华硕搬哪里去了想知道:中国 上海市杨浦区华硕专卖店的详细地址在哪上海的联想,dell,华硕,acer旗舰店在哪里上海有华硕电脑的专卖店吗上海苏州哪里买华硕的

2024年10月7日 22:30

水货为什么便宜(为什么手机水货那么便宜呢)

水货为什么便宜(为什么手机水货那么便宜呢)

为什么手机水货那么便宜呢水货手机,之所以便宜,一部分在关税问题上,另一部分是在产品配件上。关税的具体数额不好计算,对于电子产品每年的关税额度都是在变的,这几年大概都在10%以内。至于配件,我们买到的水货手机,通常是比标配少一块电池或者充电器

2024年12月27日 18:30

acer维修电脑电话(四川广安acer笔记本电脑售后服务地在哪里)

acer维修电脑电话(四川广安acer笔记本电脑售后服务地在哪里)

本文目录四川广安acer笔记本电脑售后服务地在哪里宏基笔记本在北京的维修地址在哪联系电话是多少谢谢了,大神帮忙啊谁知道宏基(acer)电脑公司售后服务的地址或电话吗宏基笔记本电脑售后维修中心电话多少拨打宏碁笔记本维修热线4006699965

2024年5月30日 07:30

k40刷机论坛(红米k40降级刷机有危害吗)

k40刷机论坛(红米k40降级刷机有危害吗)

红米k40降级刷机有危害吗红米k40降级刷机没有危害。降级手机系统对手机是没有害处的,通常新版本系统在稳定性、兼容性等方面都是优于旧版系统的,建议您将系统保持最新状态。红米k40有必要刷机吗有必要刷机,如果手机运行变得缓慢了,通过常规的卸载

2024年12月18日 16:20