realloc的全面解析

realloc也是在堆中开辟空间,但与普通的开辟空间不同。它用来扩大已经开辟好的空间。

用法为:

void *realloc(*mem_addr,unsigned int newsize)

含义是:(数据类型*)realloc(要扩大内存的指针名,新的内存大小)

这里有2种情况:

1、够开辟新的newsize,即mem_addr开始的空闲内存不小于newsize,则返回mem_addr。

2、不够开辟的newsize,即mem_addr开始的空闲内存小于newsize,则会换一个新的地方重新开辟newsize大小的内存,并将mem_addr处开始的数据自动拷贝到新的地址,mem_addr开始的原来的内存也自动释放掉,不用手动free。返回新的首地址。

关于返回值

1、如果参数mem_addr=NULL,则realloc与malloc一样,开辟newsize大小的空间,返回开辟的内存地址。

2、如果参数newsize=0,则释放掉原内存空间,相当于free,返回NULL。

3、“扩大”成功,返回mem_addr。

4、不能再原地址扩大的,“重新开辟”成功,返回新的内存地址。

5、“扩大”与“重新开辟”都不成功,则返回NULL,原内存不变。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值