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

2024-09-13 18:20:27 44

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,

更多文章:


powerbank充电宝图片(怎样给power bank移动电源充电)

powerbank充电宝图片(怎样给power bank移动电源充电)

怎样给power bank移动电源充电怎样给power bank移动电源充电?power bank移动电源上有两个USB口,一个是输入(IN),一个是输出(OUT)连接数据线插入输入口,再插到市电的接口上就可以,电源充好了电后,要给手机充电

2024年12月31日 06:10

vivox27手机像素(vivox27屏幕尺寸多大)

vivox27手机像素(vivox27屏幕尺寸多大)

本文目录vivox27屏幕尺寸多大vivo x27像素多少vivox27像素多少vivox27屏幕尺寸多大vivox27是一款全面屏手机,虽然屏占比够高,但屏幕尺寸大小也非常重要。那么vivox27屏幕尺寸到底有多大呢?下面我们一起来了解下

2024年8月28日 07:00

一加六等于一什么意思(1加1等于6是谁说的)

一加六等于一什么意思(1加1等于6是谁说的)

本文目录1加1等于6是谁说的一加六等于几10以内的加法口诀是什么1加1等于6是谁说的爱因斯坦。1加1等于6是爱因斯坦说的。如果在把"+"看成是两的个"1","="也看做两个“1”再加上本来的两个“1”,就是6了。还有一种如果是某种产品的效能

2024年12月10日 19:40

联想官网线下门店(联想拯救者游戏本直售店是正品吗)

联想官网线下门店(联想拯救者游戏本直售店是正品吗)

本文目录联想拯救者游戏本直售店是正品吗联想笔记本官网上的和实体店的款式不一样实体店的官网上没有,实体店的款式都是老款式吗联想拯救者R9000P哪里买唐山丰润联想线下门店地址联想拯救者R9000P怎么买北京联想专卖店 都在哪信誉比较高的联想有

2024年12月13日 06:50

国美全零售战略积蓄势能瞄准趋势风口?海尔和国美的供应链合伙关系经历了哪些阶段

国美全零售战略积蓄势能瞄准趋势风口?海尔和国美的供应链合伙关系经历了哪些阶段

国美全零售战略积蓄势能瞄准趋势风口在今年的电商大会上,国美控股集团CEO杜鹃在主论坛发表了重要演讲,她认为“数字化自带开放共享基因,具备融合发展的属性。同时,杜鹃强调国美与友商平台互联互通,对市场伙伴公平开放,倡议构建共享共建的“家·生活零

2024年12月24日 10:50

三星flip3折叠手机价格(哪些折叠屏手机值得入手)

三星flip3折叠手机价格(哪些折叠屏手机值得入手)

大家好,三星flip3折叠手机价格相信很多的网友都不是很明白,包括哪些折叠屏手机值得入手也是一样,不过没有关系,接下来就来为大家分享关于三星flip3折叠手机价格和哪些折叠屏手机值得入手的一些知识点,大家可以关注收藏,免得下次来找不到哦,下

2025年3月14日 12:10

联想a7600评测(联想a7600f平板怎么样)

联想a7600评测(联想a7600f平板怎么样)

本篇文章给大家谈谈联想a7600评测,以及联想a7600f平板怎么样对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录联想a7600f平板怎么

2025年3月13日 19:50

中兴手机u970(中兴U970能用电信卡吗)

中兴手机u970(中兴U970能用电信卡吗)

本文目录中兴U970能用电信卡吗手机没有信号怎么办我的手机是中兴u970,这两天经常没有信号,和没插卡一样,但是能读取联系人中兴U970的功能详解中兴U970(GrandX) 联想乐PhoneS899t 中兴V970(GrandX) 小米M

2024年12月3日 11:40

中关村手机电脑版(苹果 6sp突然卡机重启是怎么回事)

中关村手机电脑版(苹果 6sp突然卡机重启是怎么回事)

这篇文章给大家聊聊关于中关村手机电脑版,以及苹果 6sp突然卡机重启是怎么回事对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录苹果 6sp突然卡机重启是怎么回事软件下载网站有哪些热门笔记本电脑哪个牌子好大全 ZOL中关村在线中

2025年3月8日 08:50

投影仪看电视(投影仪能直接看电视吗)

投影仪看电视(投影仪能直接看电视吗)

本文目录投影仪能直接看电视吗投影仪可以看电视节目吗投影仪怎么看电视台的频道投影仪可以看电视吗投影仪可以直接看电视吗投影仪看电视剧黑屏怎么办想买投影仪在家看电影!需不需要外接音响投影机一定要连接电脑才能使用吗我没有电脑怎么办家用投影做个家庭影

2024年9月1日 04:10

三星不激活能进系统吗(三星手机要激活吗)

三星不激活能进系统吗(三星手机要激活吗)

本文目录三星手机要激活吗三星fold4开封激活未使用三星S7不激活能不能用三星w23激活和未激活有什么区别三星笔记本不激活会怎么样三星手机要激活吗当您首次使用手机或将手机恢复出厂设置后,需要对手机进行初始化设置,请按照系统提示逐步设置语言、

2024年12月12日 02:50

国美电器app下载安装(知名公司旗下的贷款APP 知道这10个就够了!)

国美电器app下载安装(知名公司旗下的贷款APP 知道这10个就够了!)

本文目录知名公司旗下的贷款APP 知道这10个就够了!国美真快乐怎么样国美智能插座用哪些app可以控制国美易卡超级会员有用吗国美金融一直批复中是什么意思国美电器app怎么没有了国美电器现在怎么样了国美极信通信网上营业厅app华为应用怎么没有

2024年6月1日 22:40

跑步机品牌十大排名(家用跑步机十大品牌)

跑步机品牌十大排名(家用跑步机十大品牌)

本文目录家用跑步机十大品牌跑步机口碑排行国内健身器材排名跑步机什么牌子的好家用前10名家用跑步机品牌排名家用跑步机使用注意事项家用跑步机十大品牌家用跑步机十大品牌跑步机家用前10名的排名:爱康/ICON、舒华/SHUA、速尔/SOLE、亿健

2024年8月30日 06:00

威纶触摸屏有自然熄屏的功能吗?威纶通触摸屏mt和tk的区别

威纶触摸屏有自然熄屏的功能吗?威纶通触摸屏mt和tk的区别

本文目录威纶触摸屏有自然熄屏的功能吗威纶通触摸屏mt和tk的区别威纶触摸屏黑屏有声音怎么解决威纶通触摸屏点表在哪里威纶通触摸屏怎么输入密码切换窗口威纶触摸屏软件电脑需什么系统才能安装威纶通触摸屏资料取样怎么导入电脑威纶通触摸屏直接窗口弹出后

2024年10月5日 06:30

5d mark iii 蜂鸟(佳能 5D Mark II 若要配定焦镜头应配哪几款)

5d mark iii 蜂鸟(佳能 5D Mark II 若要配定焦镜头应配哪几款)

大家好,5d mark iii 蜂鸟相信很多的网友都不是很明白,包括佳能 5D Mark II 若要配定焦镜头应配哪几款也是一样,不过没有关系,接下来就来为大家分享关于5d mark iii 蜂鸟和佳能 5D Mark II 若要配定焦镜头

2025年3月26日 15:40

爱国者w148(爱国者电源怎么样)

爱国者w148(爱国者电源怎么样)

本文目录爱国者电源怎么样爱国者W148和三星ES75那个相机好一点呢我要爱国人士回答!爱国者电源怎么样整体不错。作为华旗的电源品牌,表现一直不错。比如爱国者A110移动电源的标称电芯容量为11000mAh,电量充足持久,能够满足大部分使用者

2024年7月1日 05:40

华为p40pro深度评测(华为p40与华为p40pro的区别-华为p40与华为p40pro参数对比测评)

华为p40pro深度评测(华为p40与华为p40pro的区别-华为p40与华为p40pro参数对比测评)

本文目录华为p40与华为p40pro的区别-华为p40与华为p40pro参数对比测评华为p40pro和iPhone11pro的全方位对比评测华为p40与华为p40pro的区别-华为p40与华为p40pro参数对比测评 华为手机作为国产手机中

2024年10月18日 11:30

哪个牌子的充电宝好用(充电宝好用的牌子)

哪个牌子的充电宝好用(充电宝好用的牌子)

本文目录充电宝好用的牌子什么牌子的充电宝好充电宝好用的牌子2022充电宝好耐用质量好的牌子有:第一名:品胜PISEN上榜理由:质量出众,外壳坚固耐用。带有智能防护系统,采用超声工艺衔接,时尚美观。体积小巧精致,便于携带。小编觉得这是个很“强

2024年5月20日 15:50

比亚迪手机nfc钥匙(怎么把比亚迪nfc钥匙弄到小米手环上)

比亚迪手机nfc钥匙(怎么把比亚迪nfc钥匙弄到小米手环上)

怎么把比亚迪nfc钥匙弄到小米手环上设置小米nfc方法:打开小米手环NFC功能,下载比亚迪云服务APP。点击云服务NFC入口,添加NFC钥匙,自动识别支持NFC机型。进行安全验证,进入to钱包H5界面。输入个人化数据,即可设置成功。不支持的

2025年1月22日 11:20

k3003怎么拆(怎么区分爱科技k3003真假)

k3003怎么拆(怎么区分爱科技k3003真假)

大家好,今天小编来为大家解答以下的问题,关于k3003怎么拆,怎么区分爱科技k3003真假这个很多人还不知道,现在让我们一起来看看吧!本文目录怎么区分爱科技k3003真假小白的问一下,AKG的K3003需要煲机吗求助!求K3003煲机方法!

2025年2月24日 06:10

近期文章

upkeep(upkeep是什么意思)
2025-04-01 10:10:19
本站热文

840m显卡(840m能玩能玩地平线吗)
2024-03-07 02:50:01 浏览:199
标签列表

热门搜索