relloac函数
1.relloc函数会将原有空间的数据拷贝到新的空间
2.realloc函数会释放原有空间的内存
3.底层使用malloc函数实现
用法(以栈的增容为例)
bool Cap_Increas(Stack* s) {
assert(s != NULL);
int count = s->capital;
int newsize = s->capital * CapIncres;
ElemType* newdata = (ElemType*)realloc(s->base ,sizeof(ElemType) * newsize);
if (newdata == NULL) return false;
s->base = newdata;
s->top = s->base+count;
s->capital = newsize;
return true;
}
malloc函数
申请新空间,并且需要手动移动数据,释放原有空间
用法(以栈的增容为例)
bool Cap_Increas(Stack* s) {
assert(s != NULL);
int newsize = s->capital * CapIncres;
ElemType* newdata = (ElemType*)malloc(sizeof(ElemType) * newsize);
if (newdata == NULL) return false;
memmove(newdata, s->base, s->capital * sizeof(ElemType));
free(s->base);
s->base = newdata;
s->top = s->base + s->capital;
s->capital = newsize;
return true;
}