首页 > 编程笔记

C语言calloc():动态分配堆内存并初始化

calloc() 是 C语言的一个标准库函数,定义在<stdlib.h>头文件中。

calloc() 函数用于在堆上分配指定大小的内存,和 malloc() 函数不同之处在于,calloc() 函数会自动将堆内存空间初始化为 0。

calloc() 函数的原型如下:
void* calloc(size_t num, size_t 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() 函数时,应始终检查其返回值以确保内存分配成功,并在不再需要内存时适当释放它。

推荐阅读