admin 管理员组

文章数量: 1086019


2024年4月18日发(作者:shell脚本批量注释)

calloc和malloc的用法

calloc和malloc都是C语言中动态内存分配函数,用于在程序

运行时动态分配内存。

1. malloc函数:

malloc函数的原型为:void* malloc(size_t size);

参数size表示需要分配的内存大小(以字节为单位)。

调用malloc函数分配内存时,会从堆中找到合适大小的连续

内存块分配给程序,并返回分配的内存地址。

注意:malloc只负责分配内存,并不对分配的内存进行初始

化,所以分配的内存中的值是未知的。

2. calloc函数:

calloc函数的原型为:void* calloc(size_t num, size_t size);

参数num表示需要分配的元素个数,而参数size表示每个元

素的大小(以字节为单位)。

调用calloc函数时,会分配一个大小为num*size的内存块,

并将该内存块中的每个字节都初始化为0。

和malloc函数不同的是,calloc函数分配的内存连续块中的

值都是0。

使用malloc和calloc的一般步骤:

1. 声明一个指针变量,用于存储分配的内存地址。

2. 调用malloc或calloc函数,传入需要分配的内存大小或元

素个数以及每个元素的大小。

3. 检查函数返回的指针是否为NULL,如果为NULL则说明

分配失败,可能是由于内存不足。

4. 使用分配的内存进行各种操作。

5. 在不需要使用分配的内存时,使用free函数将其释放,防

止内存泄漏。

示例:

```c

#include

#include

int main() {

int* arr = (int*)calloc(5, sizeof(int));

if (arr != NULL) {

for (int i = 0; i < 5; i++) {

printf("%d ", arr[i]); // 输出0

}

printf("n");

free(arr);

}

return 0;

}

```

以上示例代码中,通过调用calloc函数分配了一个包含5个整

数的内存块,并将其每个字节都初始化为0。然后使用for循

环遍历并输出了分配的内存块中的值,并最后使用free函数

释放了这块内存。


本文标签: 分配 函数 内存