关于栈和队列这一章的销毁函数DestroyStack的一些异议
这是小甲鱼老师 栈和队列2 那一课时候的代码DestroyStack(sqStack *s)
{
int i, len;
len = s->stackSize;
for( i=0; i < len; i++ )
{
free( s->base );
s->base++;
}
s->base = s->top = NULL;
s->stackSize = 0;
}
由于我们初始化函数是:
initStack(sqStack *s)
{
s->base = (ElemType *)malloc( STACK_INIT_SIZE * sizeof(ElemType) );
if( !s->base )
exit(0);
s->top = s->base; // 最开始,栈顶就是栈底
s->stackSize = STACK_INIT_SIZE;
}
已经申请的内存是一整块的,这里我觉得释放的时候只要调用free( s->base )即可,系统会自动将这一块申请的内存回收
//更正后的函数,这里我调试过了,的确把之前申请的内存都释放了,而调用小甲鱼老师的销毁函数会产生异常,不知道其他鱼油有没有注意到这个问题!!!
Status DestroyStack(sqStack *s)
{
//初始化的时候是一整块申请的,这里只要调用free释放就可以了
if( s == NULL )
return ERROR;
free(s->base);
s->base = s->top = NULL;
s->stackSize = 0;
return OK;
}
页:
[1]