calloc函数

张开发
2026/4/16 20:15:19 15 分钟阅读

分享文章

calloc函数
calloc是 C 标准库中用于动态内存分配的函数与malloc类似但它有两个主要特点分配并清零分配的内存块中所有字节会被自动初始化为 0。参数不同接受两个参数——元素个数和每个元素的大小字节数。函数原型#includestdlib.hvoid*calloc(size_tnmemb,size_tsize);nmemb要分配的元素个数。size每个元素的字节数通常用sizeof。返回值成功返回指向分配内存的void*指针失败返回NULL。与malloc的区别特性malloccalloc参数总字节数size元素个数nmemb 单个大小size内存初始化不初始化内容随机初始化为 0效率稍快无需清零稍慢需要清零典型用途分配后马上手动填充数据需要零初始化内存如数组、结构体使用示例int*p(int*)calloc(10,sizeof(int));// 分配 10 个 int全部初始化为 0if(pNULL){// 处理分配失败}// 可以直接使用 p[0]..p[9]值都是 0free(p);// 释放内存等价写法// 以下两种写法效果相同但 calloc 可能更清晰int*p1(int*)malloc(10*sizeof(int));memset(p1,0,10*sizeof(int));int*p2(int*)calloc(10,sizeof(int));注意事项总大小nmemb * size不应溢出size_t否则calloc可能失败或分配错误大小的内存。性能如果不需要清零用malloc更快。与malloc一样分配的内存来自堆必须用free释放。常用于分配数组、结构体或需要安全初始化的场景如避免未初始化导致的随机值。总结calloc是一个方便的函数用于分配并清零内存。它适合需要初始化为零的数组或结构体比mallocmemset更简洁。但若不需要清零malloc效率更高。

更多文章