C语言realloc函数解析

本文详细解析了C语言中realloc函数的工作原理及其应用场景。当需要调整由malloc分配的内存大小时,realloc函数可以实现内存的扩展或缩减。文章还介绍了realloc在不同情况下如何处理内存分配及数据迁移的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上查了很多资料,终于大概知道了这个函数的原理

void *realloc(void *ptr, size_t size);

作用:更改已经配置的堆内存空间,说白了在C语言中就是更改由malloc()函数分配的内存空间的大小。

当需要将已分配的内存减小时,则返回原指针,仅仅是对应索引的内存空间减小了

当需要将已分配的内存增大时:则分为以下3种情况:

1)如果当前内存段后面有需要的内存空间,则直接扩展这段内存空间,realloc()将返回原指针。
2)如果当前内存段后面的空闲字节不够,那么就使用堆中的第一个能够满足这一要求的内存块,将目前的数据复制到新的位置,并将原来的数据块释放掉,返回新的内存块位置。
3)如果申请失败,将返回NULL,此时,原来的指针仍然有效。

不过有一点需要注意的是:如果调用成功,不管当前内存段后面的空闲空间是否满足要求,都会释放掉原来的指针,重新返回一个指针,虽然返回的指针有可能和原来的指针一样,即不能再次释放掉原来的指针。


接下来请看代码示例:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值