关键区别- calloc和malloc
在编程中,有必要存储数据。数据存储在内存中。这些内存位置被称为变量.每个变量都有特定的类型。它们可以是整数、浮点数、双精度数和字符等。还有一些数据结构可以存储相同类型的固定大小的顺序元素集合。这是一个数组.程序员必须声明数组的大小。如果程序员为五个元素声明一个整数数组,则不可能将值赋给高于声明大小的索引。内存分配是固定的,不能在运行时更改。其他内存分配方法是动态内存分配.动态内存分配有助于在需要时分配更多内存,并在需要时释放更多内存。< stdlib.h >头文件具有四个动态内存分配函数。Calloc和malloc就是两个这样的函数。的关键的区别在calloc和malloc之间Calloc分配内存并将已分配的内存块初始化为零,而malloc分配内存但不将已分配的内存初始化为零.访问calloc中的内容将给出0,但malloc将给出一个垃圾值。
内容
1.概述和主要区别
2.什么是calloc
3.malloc是什么
4.胼胝体和malloc的相似之处
5.并排比较-表格形式的胼胝体和malloc
6.总结
calloc是什么?
内存分配是为正在执行的程序分配内存的过程。有时需要改变内存的大小。因此,使用动态内存分配。它是用指针.指针是参考保存另一个变量地址的变量。
Calloc代表“连续分配”。它会分配多个大小相同的内存块。calloc的语法如下所示。它有两个参数。它们是块的数量和每个块的大小。函数calloc返回一个空指针,因此使用强制转换运算符根据所需的数据类型返回指针类型。
Void * calloc(size_t num, size_t size);
参考下面的简单C程序。
# include < stdio . h >
# include < stdlib.h >
int main () {
Int ptr* = (Int *) calloc(20, sizeof(Int));
if (ptr == NULL){
printf(“内存未分配”);
}
其他{
printf(内存分配);
}
返回0;
}
根据上面的程序,分配一个可以容纳20个元素的连续内存块。每个都有一个整数的大小。使用sizeof(int)是因为整数类型因编译器的不同而不同。
如果内存分配成功,它将返回内存块的基址。这意味着指针ptr现在指向该内存块的基址。所有分配的区域都初始化为零。它将打印内存已分配消息。如果内存分配不成功,它将返回空指针。因此,它将打印内存未分配消息。
malloc是什么?
malloc函数用于在内存中分配所需的字节数。malloc的语法如下所示。大小以字节表示所需的内存。
void * malloc (size_t_size);
函数malloc返回一个空指针,因此根据所需的数据类型使用强制转换运算符返回指针类型。
参考下面带有malloc函数的简单C程序。
# include < stdio . h >
# include < stdlib.h >
int main () {
Int ptr* = (Int *) malloc (10 * sizeof(Int));
if (ptr == NULL){
printf(“内存未分配”);
}
其他{
printf(内存分配);
}
返回0;
}
根据上面的程序,块内存将被分配。指针指向已分配内存的起始地址。返回的指针被转换为整数类型。如果分配了内存,它将打印内存已分配消息。如果没有分配内存,则返回空指针。因此,内存未分配的消息将被打印。
胼胝体和malloc有什么相似之处?
- 这两个函数都在头文件
中声明。它是标准的库头文件。 - 这两个函数都用于动态内存分配。
- 由calloc和malloc返回的指针应该被强制转换为特定的类型。
- 在内存分配成功的情况下,这两个函数都将返回一个带有内存块基址的指针。
- 如果内存分配不成功,将返回空指针。
胼胝体和malloc的区别是什么?
calloc vs malloc |
|
Calloc是用于动态内存分配的函数C语言h头文件,分配特定数量的字节并将其初始化为零。 | malloc是C语言stdlib.h头文件中动态分配内存的函数,它分配特定的字节数。 |
意义 | |
Calloc表示连续分配。 | Malloc代表内存分配。 |
语法 | |
Calloc遵循类似void * Calloc (size_t_num, size_t size)的语法; | Malloc遵循类似于void * Malloc (size_t_size);的语法。 |
数量的参数 | |
Calloc接受两个参数。它们是块的数量和每个块的大小。 | Malloc有一个参数。它是一个字节数。 |
速度 | |
Calloc比malloc花的时间长一点。这是因为额外的步骤是将分配的内存初始化为0。 | Malloc比calloc快。 |
总结- - - - - -calloc vs malloc
在静态内存分配中,例如使用数组,内存是固定的。如果存储的元素很少,那么其余的内存就会被浪费。当分配的内存小于所需的内存时,还可能导致错误。因此,使用动态内存分配。在C语言中,calloc和malloc提供动态内存分配。calloc和malloc的区别在于,calloc分配内存并将已分配的内存块初始化为零,而malloc分配内存但不将内存块初始化为零。Malloc接受两个参数,而calloc接受两个参数。
下载calloc vs malloc的PDF
您可以下载本文的PDF版本,并根据引用说明将其用于离线用途。请在此下载PDF版本:胼胝体和malloc的区别
参考:
1.Kumar Krishan。" c中Malloc和Calloc的区别"可以在这里
2.C动态内存分配。维基百科,维基媒体基金会,2018年1月13日。可以在这里
3 .“Calloc()对malloc()。”GeeksforGeeks, 2017年6月14日。可以在这里
留下一个回复