首页 > 编程笔记
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() 函数时,应始终检查其返回值以确保内存分配成功,并在不再需要内存时适当释放它。