C语言calloc():动态分配堆内存并初始化
calloc() 是 C语言的一个标准库函数,定义在
calloc() 函数用于在堆上分配指定大小的内存,和 malloc() 函数不同之处在于,calloc() 函数会自动将堆内存空间初始化为 0。
calloc() 函数的原型如下:
结合函数原型,calloc() 函数最终申请的堆内存大小是 num*size 个字节。和 malloc() 类似,calloc() 分配的内存也必须使用 free() 函数手动释放。
【实例】以下是一个使用 calloc() 的C语言代码示例,示例中分配了一个整数数组,并在释放内存之前使用它。
再次强调,实际代码中使用 calloc() 函数时,应始终检查其返回值以确保内存分配成功,并在不再需要内存时适当释放它。
<stdlib.h>头文件中。calloc() 函数用于在堆上分配指定大小的内存,和 malloc() 函数不同之处在于,calloc() 函数会自动将堆内存空间初始化为 0。
calloc() 函数的原型如下:
void* calloc(size_t num, size_t size);
参数
- num:要分配的元素数量。
- size:每个元素的字节大小。
返回值
如果分配成功,则返回指向分配内存的指针,该内存已初始化为 0;如果分配失败,则返回 NULL。结合函数原型,calloc() 函数最终申请的堆内存大小是 num*size 个字节。和 malloc() 类似,calloc() 分配的内存也必须使用 free() 函数手动释放。
【实例】以下是一个使用 calloc() 的C语言代码示例,示例中分配了一个整数数组,并在释放内存之前使用它。
#include <stdlib.h>
#include <stdio.h>
int main() {
int *arr;
int n = 5;
// 使用 calloc 分配并初始化 5 个整数的内存空间
arr = (int*) calloc(n, sizeof(int));
if (arr == NULL) {
fprintf(stderr, "Memory allocation failed!\n");
return 1;
}
// 打印数组,所有值都已初始化为0
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 释放分配的内存
free(arr);
return 0;
}
这个示例中的输出将是五个 0,因为 calloc() 自动将分配的内存初始化为 0。再次强调,实际代码中使用 calloc() 函数时,应始终检查其返回值以确保内存分配成功,并在不再需要内存时适当释放它。
ICP备案:
公安联网备案: