关于顺序表插入时若内存已满分配新空间的问题

关于顺序表插入时若内存已满分配新空间的问题

   if(L.length>=L.listsize)      /* 当前存储空间已满,增加分配 */
   {
     newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
     if(!newbase)
       return Error;            /* 存储分配失败 */
     L.elem=newbase;              /* 新基址 */
     L.listsize+=LISTINCREMENT;        /* 增加存储容量 */
   }

中间为什么不直接写成如下的形式,而要引入一个newbase呢?

 L.elem=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
     if(!L.elem)
       return Error;  

现实中现在很难遇到真的内存耗尽的情况了。
作者这么写,也许是希望即便没有分配成功,也不破坏原来老的内存指针吧。

这样做的目的,是生成新的空间失败时,而不影响原来已有的顺序表空间。