【C语言】realloc函数及其拓展

【realloc函数】        

        【基础理解】

在我们知道realoc函数之前相信大家都已经了解malloc函数了,malloc函数是一个动态分配内存的函数。当我们用mallco函数申请内存时有时候会太大,有时候会太小,这时我们就要用realloc函数来合理的运用空间内存了。

        【概念】

从这张图片我们可以知道,realoc函数的返回值依然是void类型的指针。依然需要像malloc一样进行类型转换。数据类型+变量名=(数据类型*)realloc(需要改变大小的指针名,新的大小)。同时当他们用完以后他们是需要是同free函数进行内存释放的。

        他的头文件跟malloc一样是stdlib.h头文件。

【小案例】

接下来我们写一段代码来理解一下realloc函数的具体用法。

当我们运行这段代码时,会报错,为什么呢,因为malloc申请的内存只有四字节,但我们的字符串的至少有6个字节大小,所以当释放内存时会报错,这会儿我们就要用到realloc函数了。

这时,我们的代码就可以正常的运行和结束了。

【原理】

realloc函数在增加内存时会先对malloc函数后面申请内存,如果未能申请成功,他会调用malloc函数开辟一个新的空间,并把原本数组里的数据复制到新的数组中,释放掉原有的内存。但这次也没能成功的话他会返回一个空(NULL)。

【拓展】

接下来我们写一段关于打字输入的代码,因为我们不知道使用者会写多少字,所以我们无法确定字符串长度为多少,写大了会浪费内存,写小了又不能完成需求,那我们该怎么办呢?这时我们就要用到realloc函数进行不断地开辟新空间了。具体代码为如下。

运行结果与需求一致且程序能正常结束。

关于realloc函数的基础和拓展就此结束了,谢谢各位的观看,有什么不去请在评论区打出来,作者大大会好好改进哒!对您有帮助请点个赞+收藏,蟹蟹!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值