分配(calloc)和马洛克(malloc)的区别
在编程中,有必要存储数据。数据存储在存储器中。这些内存位置称为变量。每个变量都有特定的类型。它们可以是整数、浮点、双精度、字符等。还有一些数据结构可以存储相同类型元素的固定大小的顺序集合。它是一个数组。程序员必须声明数组大小。如果程序员声明五个元素的整数数组,则不可能为大于声明大小的索引赋值。内存分配是固定的,不能在运行时更改。另一种内存分配方法是动态内存分配。动态内存分配有助于在需要时分配更多内存,必要时释放内存。<;stdlib.h>;头文件有四个用于动态内存分配的函数。calloc和malloc就是两个这样的函数。calloc和malloc之间的关键区别在于,calloc分配内存并将分配的内存块初始化为零,而malloc分配内存,但不会将分配的内存初始化为零。访问calloc中的内容将得到零,但是malloc将给出一个垃圾值。
目录
1. 概述和主要区别
2.什么是calloc
3. 什么是malloc
4. calloc和malloc的相似性
5. 并列比较——表格形式的calloc与malloc
6. 摘要
什么是分配(calloc)?
内存分配是为正在执行的程序分配内存的过程。有时需要改变内存的大小。因此,使用动态内存分配。它是用指针完成的。指针是保存另一个变量地址的引用变量。
calloc代表“连续分配”。它分配相同大小的多个内存块。calloc的语法如下。需要两个参数。它们是块的数量和每个块的大小。函数calloc返回一个空指针,因此使用cast运算符根据所需的数据类型返回指针类型。
void*calloc(大小数字,大小大小大小);
参考下面的简单C程序。
#包括
#包括
内部主(){
int ptr*=(int*)calloc(20,sizeof(int));
如果(ptr==NULL){
printf(“内存未分配”);
}
其他{
printf(“内存已分配”);
}
返回0;
}
根据上述程序,分配可容纳20个元素的连续存储器块。每个都有整数大小。使用sizeof(int)是因为整型因编译器而异。
如果内存分配成功,它将返回内存块的基址。这意味着指针ptr现在指向该内存块的基址。所有分配的区域都初始化为零。它将打印内存分配消息。如果内存分配不成功,它将返回空指针。因此,它会打印内存未分配的消息。
什么是马洛克(malloc)?
malloc函数用于在内存中分配所需的字节量。malloc的语法如下。大小表示所需的内存(以字节为单位)。
void*malloc(大小);
函数malloc返回一个空指针,因此使用cast运算符根据所需的数据类型返回指针类型。
参考下面的带有malloc函数的简单C程序。
#包括
#包括
内部主(){
int ptr*=(int*)malloc(10*sizeof(int));
如果(ptr==NULL){
printf(“内存未分配”);
}
其他{
printf(“内存已分配”);
}
返回0;
}
根据上述程序,将分配内存块。指针指向已分配内存的起始地址。返回的指针被转换为整数类型。如果内存已分配,它将打印内存已分配消息。如果没有分配内存,则返回空指针。因此,内存未分配消息将被打印。
分配(calloc)和马洛克(malloc)的共同点
- 这两个函数都在头文件<stdio.h>中声明。它是标准库头文件。
- 这两个函数都用于动态内存分配。
- calloc和malloc返回的指针应强制转换为特定类型。
- 在成功的内存分配中,这两个函数都将返回一个带有内存块基址的指针。
- 如果内存分配不成功,将返回空指针。
分配(calloc)和马洛克(malloc)的区别
卡洛克vs马洛克 | |
calloc是C语言stdlib.h头文件中用于动态内存分配的函数,它分配特定数量的字节并将其初始化为零。 | malloc是C语言stdlib.h头文件中用于动态内存分配的函数,它分配特定数量的字节。 |
意义 | |
calloc代表连续分配。 | malloc代表内存分配。 |
语法 | |
calloc的语法类似于void*calloc(size\u tu num,size\t size); | malloc的语法类似于void*malloc(size_t_size);。 |
参数个数 | |
calloc接受两个参数。它们是一些块和每个块的大小。 | malloc接受一个论点。它是一个字节数。 |
速度 | |
calloc比malloc花费的时间稍长。这是因为额外的一步是将分配的内存初始化为零。 | malloc比calloc快。 |
总结 - 分配(calloc) vs. 马洛克(malloc)
在使用数组的静态内存分配中,内存是固定的。如果存储的元素很少,那么剩余的内存将被浪费。当分配的内存小于所需内存时,也可能导致错误。因此,使用动态内存分配。在C语言中,calloc和malloc提供了动态内存分配。calloc和malloc的区别在于,calloc分配内存并将分配的内存块初始化为零,而malloc分配内存但不将内存块初始化为零。Malloc接受两个参数,而calloc接受两个参数。
下载calloc vs malloc的pdf文件
你可以下载这篇文章的PDF版本,并根据引文说明离线使用。请在这里下载与malloc版本之间的差异