C语言中的realloc函数动态分配内存

虽然现在说这个。。多半没有什么意思。。但我的确在很长的一段时间不知道他的工作原理。。

所以随便记录下。。

它的原型是:

extern void * realloc(void * __ptr,size_t __size);

第一个参数是为试图更改大小的原堆文件,size为新的内存大小。

1.如果内存减少,则仅改变下索引信息,但并不代表被减少的部分内存还可以安全访问,这己经释放。

2.如果扩大内存空间,则返回情况如下:

 (1),如果当前内存段后面拥有需要的内存空间,则直接扩展这段内存空间,返回原指针

   (2),如果当前内存段后面的空闲字节不够,那么就使用堆中第一个能够满足这一要求的内存块,

将目前的数据复制到新的位置,并将原来的数据块释放掉,返回新的内存位置指针

  (3)如果申请失败,返回NULL,此时原来的指针仍有效。、、


因此调用时会返回新的指针,应该判断,而原来指针会释放,不需要重新手动释放,因此下面的使用方式不好:

ptr = realloc (ptr , new_size);


摘抄自:linux高级程序设计

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值