设为首页 加入收藏

TOP

C语言中的realloc函数动态分配内存
2014-11-24 11:39:40 】 浏览:4745
Tags:言中 realloc 函数 动态 分配 内存

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


所以随便记录下。


它的原型是:


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


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


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


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


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


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


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


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


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


ptr = realloc (ptr , new_size);


摘抄自:Linux高级程序设计


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇uCOS_II 移植到友善之臂mini2440 下一篇编译Linux内核心得分享

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目