realloc 用法

参考文献:  http://blog.csdn.net/snlying/article/details/4005238

 

返回情况 :
返回的是一个void类型的指针,调用成功。(这就再你需要的时候进行强制类型转换) 
返回NULL,当需要扩展的大小(第二个参数)为0并且第一个参数不为NULL,此时原内存变成了“freed(游离)”的了。

realloc 并不保证调整后的内存空间和原来的内存空间保持同一内存地址。相反,realloc 返回的指针很可能指向一个新的地址。所以在代码中,我们必须将realloc返回的值,重新赋值给 p :
p = (int *) realloc (p, sizeof(int) *15);

newbase = (ElemType *)realloc(L,elem,(L.listsize + LISTINCREMENT)*sizeof(ElemType));

if(!newbase) exit(OVERFLOW); //存储分配失败

L.elem = newbase;                //新基址

L.listsize += LISTINCREMENT; //增加存储容量

 

posted on 2014-05-03 16:14  zhuxuekui3  阅读(371)  评论(0编辑  收藏  举报