(C语言)快速认识malloc、calloc、realloc

文章介绍了C语言中动态内存管理的三个关键函数:malloc用于动态开辟内存空间,calloc同样开辟内存但会初始化为0,realloc则用于调整已开辟内存的大小。在使用这些函数时,需要注意检查分配是否成功,以及在不再需要内存时及时释放。realloc的特殊之处在于,如果内存调整失败,原指针可能变为NULL,因此需要新指针接收返回值。
摘要由CSDN通过智能技术生成

一、malloc:动态开辟一块内存空间,大小是自己指定的,需要拿一个指针接收它的返回值

 malloc向内存申请空间后,必须先判断内存开辟成功没,判断方法就是malloc返回的指针是不是指向NULL,指向NULL代表内存开辟失败:

 通常,动态内存开辟需要配合free使用,当不用这块内存空间就free它,且把指向这块内存的指针置空:

 二、calloc动态开辟一块内存空间,大小是自己指定的,需要拿一个指针接收它的返回值

calloc与malloc的区别在于,calloc动态内存开辟后,会将申请的空间每个字节初始化位为0:

 三、realloc:动态调整已开辟的内存空间大小,大小是自己指定,并拿一个指针接收它的返回值(动态调整内存空间大小,都是把空间调整得更大)

 realloc有两种情况:

第一:动态调整已开辟的内存空间大小,如果原有内存空间够大,那么就在这块内存空间后面继续开辟;

第二:动态调整已开辟的内存空间大小,如果原有内存空间不够大,那么就会自动重新找一块内存空间开辟,并且自动把原来的那块空间的值拷贝的新空间,旧空间自动被释放掉。

值得注意的是:

 使用realloc重新调整内存空间大小时,如果p指针指向了重新调整内存前那块区域,那么重新调整内存后,需要拿一个新指针接收,因为如果realloc开辟失败了,那么会返回NULL,此时如果拿p指针接收,那么导致p变成了NULL,找不回之前的那块空间了,所以拿新指针接收,判断realloc函数返回值不是NULL,再把这个新指针指向的空间给回p:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值