回顾C语言中动态内存管理方式

malloc/calloc/realloc这三个方法之间的区别

相同点
a.都是C语言中用来进行动态内存申请的库函数
b.申请的空间都在堆上,用完之后必须要使用free来进行释放
c.如果空间申请成功,返回空间的首地址,如果申请失败返回的是NULL,因此在使用之前必须要进行判空
d.返回值类型都是void*,在接收返回值时必须要进行强转
不同点
1.void* malloc(size_t size)
malloc的参数时用户所申请空间的字节数,申请空间成功返回空间的首地址,如果申请空间失败,返回的是空,用户在进行接收时必须要强转,使用时必须要进行判空,使用完成之后必须要借助free来进行释放。
2.void* calloc(size_t num, size_t size)
参数个数不同
num:表示元素的个数
size: 表示单个元素所占的字节数
功能上唯一的不同就是:calloc会将其申请的内容空间初始化为0
3.void* realloc(void* p, size_t size)
将p指向堆空间大小调整到size字节
p == NULL --> 该函数的功能与malloc类似–直接申请size个字节返回即可
p != NULL --> 将p指向的空间大小调整到size字节
假设:p指向空间的大小为oldsize字节
size <= oldsize:将p指向的空间缩小,然后返回原空间的首地址即可
size > oldsize:将p指向的空间扩大
在这里插入图片描述
1.大一点点 realloc(p, 16); 直接在p的基础上进行延伸
2.大许多 realloc(p, 40); 申请size个字节的新空间 将旧空间中的内容拷贝到新空间 释放旧空间,然后返回新空间的地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值