参考文献: 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; //增加存储容量
时间: 2024-10-12 13:09:47