有关C语言realloc函数的学习笔记

介绍realloc函数

malloc函数用于改变malloc申请的空间大小,即可以进行放大和缩容,从而对空间进行合理应用

realloc调用方法

realloc基本语法

里面的str为指向用malloc开辟的空间的首地址,10,为新空间的大小,而str1为指向新空间首地址的指针

realloc的基本调用方法

如图,即可完成有关realloc的基本调用

需要注意的是

malloc和realloc都存在无法开辟空间导致指针指向NULL的情况

所以在调用完函数后要增加限制条件

判断是否函数成功开辟空间

VS2022也会有警告

realloc在无法开辟空间的时候

这个时候realloc则会返回一个空地址

并且原来的数组空间并不会发生变化

此时直接使用原来的指针即可

realloc的空间储存方式

realloc的储存方式分两种

一种为直接在原有的空间后面进行扩容

(这种情况的条件为原来的空间后面有足够的空间来扩大)

另外一种为调用malloc函数开辟一处新空间

将原有数据转移过去并将原地址free掉

这里其他博主已经进行了详细的介绍

不理解的可以看Nytrogenrealloc函数用法解释

realloc在缩容时的思考

realloc缩容的空间如果比原来的数据小

那么数据的空间变化采用是哪种方式

是将原有的空间直接砍掉

还是新开辟一处空间

我通过代码简单检验了一下

很显然

结果的地址并不一样

所以可得在缩进时开辟了一处新的空间作为载体

值得一提的是

在新空间装满时

realloc就会停止转移

因为我最后free了str1

如果我的堆区因为realloc数据溢出了

在运行时return 0就会报警

所以可得

realloc在缩进时并不会导致堆区数据溢出

但同时如果数据缺失也不会报警

在缩进时一定要查看缩小后的空间大小与原数据的空间大小

以免造成数据缺失

谢谢大家观看

点一个免费的赞吧,谢谢

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值