动态内存开辟继malloc后的calloc、realloc

本文回顾了malloc的基本用法,详细介绍了calloc与malloc的区别,包括calloc如何初始化内存。接着讲解了realloc在内存调整中的作用,分析了realloc处理内存扩展和收缩的三种情况。最后提到了动态内存管理中的注意事项,如避免越界访问、释放空指针和防止内存泄露。
摘要由CSDN通过智能技术生成

一、malloc回忆

我在上节中讲了malloc,其作用为在堆区开辟一块内存;开辟内存的单位为字节,返回开辟内存的起始位置。其函数原型为:void*  malloc(size_t  byte)。

同时我们也知道在堆区开辟一个内存空间,只要这个程序不结束这个空间会一直存在(很多人想怎么可能程序不结束,别忘了很多程序都是7乘24小时不间断运行),所以我们需要在使用完后用free释放掉内存空间,并且把开辟内存的起始位置指针置为NULL。


二、calloc讲解

1、区别

 除了malloc在堆区申请动态内存外,calloc也行,但是他们两个稍有区别,我们从calloc的函数原型入手-->   void*  calloc( size_t num , size_t  size ) 。同时calloc在堆区开辟内存后会把内存字节都置为0。因此我们可以分析出有以下两个区别。

  • 函数原型中参数不同: calloc原型函数中含有需指明含有多少个元素(size_t  num),每个元素的大小(size_t  size);而malloc仅仅只需要说明其开辟多少个字节(byte)即可。

  • 内存空间是否会初始化:calloc 在堆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值