malloc和calloc函数有什么区别?
时间: 2024-09-09 14:02:25 浏览: 70
C语言中 malloc,calloc,realloc的区别
malloc和calloc都是C语言标准库中的动态内存分配函数,它们用于在堆区分配内存。尽管它们的目的相似,但在用法和某些特性上存在区别:
1. 分配内存:malloc函数分配指定字节大小的内存块,而calloc函数分配指定数量和大小的内存块,并将内存中的每个字节初始化为0。
2. 参数个数:malloc接受一个参数,即所需内存的字节数;calloc接受两个参数,第一个是所需的内存块数量,第二个是每个内存块的大小。
3. 内存初始化:如前所述,calloc会将分配的内存初始化为0,而malloc分配的内存则不会被初始化,其内容是不确定的。
4. 返回值:两个函数在成功时返回指向分配的内存块的指针,失败时返回NULL。
5. 性能:由于calloc在分配内存后会初始化内存,所以通常会比malloc慢一些。
使用示例:
```c
int *ptr1 = (int*)malloc(10 * sizeof(int)); // 分配10个int大小的内存,未初始化
int *ptr2 = (int*)calloc(10, sizeof(int)); // 分配10个int大小的内存,每个元素初始化为0
```
阅读全文