C中的重新分配空间函数.
#define SIZE 100
int array* = (int *) malloc (SIZE * sizeof(int));
//向array数组赋SIZE个值.
........
现在要扩展数组大小.想搞成两倍的SIZE.
用: array * = (int *)relloc( array*, SIZE*2*sizeof(int));
//不太记得这个函数原形了.好像是这样的吧?
我的问题是:
relloc是先申请两倍SIZE大小的空间,然后让array指向这个空间,再把原来array指向空间的数据"复制"到这个重新分配的空间中来,最后释放掉那个最开始malloc来的空间的吗?因为不可能在原来的地址的最后再申请空间是吧.要全部重新分配才可以呀.那值是如何搞过来的呢?
如果是这样,我觉得这个效率不是很低吗?毕竟复制这么多数据要的时间很多.