【realloc函数】
【基础理解】
在我们知道realoc函数之前相信大家都已经了解malloc函数了,malloc函数是一个动态分配内存的函数。当我们用mallco函数申请内存时有时候会太大,有时候会太小,这时我们就要用realloc函数来合理的运用空间内存了。
【概念】
从这张图片我们可以知道,realoc函数的返回值依然是void类型的指针。依然需要像malloc一样进行类型转换。数据类型+变量名=(数据类型*)realloc(需要改变大小的指针名,新的大小)。同时当他们用完以后他们是需要是同free函数进行内存释放的。
他的头文件跟malloc一样是stdlib.h头文件。
【小案例】
接下来我们写一段代码来理解一下realloc函数的具体用法。
当我们运行这段代码时,会报错,为什么呢,因为malloc申请的内存只有四字节,但我们的字符串的至少有6个字节大小,所以当释放内存时会报错,这会儿我们就要用到realloc函数了。
这时,我们的代码就可以正常的运行和结束了。
【原理】
realloc函数在增加内存时会先对malloc函数后面申请内存,如果未能申请成功,他会调用malloc函数开辟一个新的空间,并把原本数组里的数据复制到新的数组中,释放掉原有的内存。但这次也没能成功的话他会返回一个空(NULL)。
【拓展】
接下来我们写一段关于打字输入的代码,因为我们不知道使用者会写多少字,所以我们无法确定字符串长度为多少,写大了会浪费内存,写小了又不能完成需求,那我们该怎么办呢?这时我们就要用到realloc函数进行不断地开辟新空间了。具体代码为如下。
运行结果与需求一致且程序能正常结束。
关于realloc函数的基础和拓展就此结束了,谢谢各位的观看,有什么不去请在评论区打出来,作者大大会好好改进哒!对您有帮助请点个赞+收藏,蟹蟹!