c语言中的malloc()和realloc()函数的功能在c++中怎么实现?
以下的代码中构造空栈和压栈函数中分别用到了malloc()和remalloc()函数,要把那两个函数改c++实现,要怎么改写啊?我知道c++中new()函数可以分配空间,但怎么分配连续的空间呢?以及怎么在原存储空间后继续分配空间呢?
哪位高手帮下忙,把下面那两个函数改为c++来实现!
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define STACK_INIT_SIZE 10 //存储空间初使分配量
#define STACKINCREMENT 2 //存储空间分配增量
typedef char SElemType;
struct SqStack{
SElemType *base; //在栈构造之前和销毁之后,base的值为NULL
SElemType *top; //栈顶指针
int stacksize; //当前已分配的存储空间,以元素为单位
};//顺序栈
int InitStack(SqStack &S){ //构造一个空栈
S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); //分配存储空间
if(!S.base) exit(OVERFLOW); //存储分配失败
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
int Push(SqStack &S,SElemType e){
//插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize){ //栈满,追加存储空间
S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType)); //在原存储空间后接着增加存储空间
if(!S.base) exit(ERROR); //存储分配失败
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*(S.top)++=e;
return OK;
}