realloc函数
来源:互联网 发布:开源网络代理服务器 编辑:程序博客网 时间:2024/06/05 10:10
include "stdlib.h" #include "stdio.h" void main() { int *i = (int*)malloc(sizeof(int)); *i = 1; // i = (int*)realloc(i, 2*sizeof(int)); int *j = (int*)realloc(i, 2*sizeof(int)); if(j){ i = j; }else{ return; } *(i+1) = 2; printf("Address: %x, Content: %d/n", i, *i); printf("Address: %x, Content: %d/n", i+1, *(i+1)); }
realloc 可以对给定的指针所指的空间进行扩大或者缩小,原有内存的中内容将保持不变。
当然,对于缩小,则被缩小的那一部分的内容会丢失。realloc 并不保证调整后的内存空间和
原来的内存空间保持同一内存地址。相反,realloc 返回的指针很可能指向一个新的地址:
因为realloc是从堆上分配内存的,当扩大一块内存空间时, realloc直接从堆上现存的数据后面的
那些字节中获得附加的字节;但如果数据后面的字节不够的话,那么就使用堆上第一个有足够大小的自
由块,现存的数据然后就被拷贝至新的位置,而老块则放回到堆上。
在代码中,如果我们采用i = (int*)realloc(i, 2*sizeof(int))的重新分配内存方式,有以下两种情况:
1.分配成功,返回void*指针:realloc返回值如果与前面malloc的值不同,那么realloc函数完成后,i指向的旧内存自动free掉。
2.分配失败,返回NULL值:此时,i原来指向的内存还没有被free掉,而现在又找不到地址,这样就出现memory leak了。
解决办法:定义另一个指针j用于接收realloc返回值,判断是否成功,成功则将j赋给i
0 0
- realloc ()函数
- realloc()函数
- realloc函数
- realloc函数:
- realloc函数
- realloc函数
- realloc函数
- 关于 realloc函数问题
- realloc函数详解
- realloc函数心得
- C语言函数realloc
- C语言函数realloc
- C语言函数realloc
- 有趣的 realloc 函数
- malloc、new、realloc函数
- C语言函数realloc
- C语言函数realloc
- realloc函数的使用
- LUA中的Table.getn()函数的用法
- Sublime text2 C/C++ 编译环境设置
- 在自己的电脑上搭建服务器,发布自己的网站(学习之用)
- first path (leading edge) detection
- Android之系统自带的文字外观设置及实际显示效果图
- realloc函数
- ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
- [MySQL] - MySQL的Grant命令
- 电源设计
- WebView加载完网页之后利用js进行网页刷新,解决webview显示图片适应所有的机型
- lua虚拟机初始化
- iOS 添加快捷代码的方法
- 进程死锁
- Android下NFC驱动初始化过程的一点分析