浅析C语言之内存分配函数malloc()、realloc()、calloc()

本文介绍了三种动态内存分配函数:malloc(), calloc(), 和 realloc() 的用法及区别。malloc() 分配未初始化内存,calloc() 分配并初始化为0的内存,realloc() 则用于改变已分配内存的大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序运行中动态分配内存,也就是从堆上分配内存,涉及到3个函数malloc()、realloc()、calloc()。

1、malloc()

函数原型: void * malloc( unsigned size);

功能:分配一块长度为size个字节的连续区域。不进行初始化。可使用menset()初始化。

返回值:该区域的首地址。可以将void*强制转换为需要的指针类型。

2、calloc()

函数原型:void * calloc( unsigned n, unsigned size);

功能:申请n个,每个占size个字节的内存空间。分配的内存全部初始化为0.

返回值:该区域的首地址。可以将void*强制转换为需要的指针类型。

3、realloc()

函数原型:void * realloc( void * p, unsigned size);

功能:将指针p所指的已分配内存区的大小改为size. 也就是给已分配了地址的指针重新分配空间。


malloc和calloc异同:

同:两者都是动态分配内存。

异:第一,malloc不对分配的空间进行初始化,已分配的内存中可以是任意的值;calloc将分配的内存初始化为0.

第二,malloc返回的是一个对象,calloc返回的是一个数组(n个size大小的空间,返回数组首地址)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值