鱼C论坛

 找回密码
 立即注册
查看: 3074|回复: 0

[争议讨论] 关于栈和队列这一章的销毁函数DestroyStack的一些异议

[复制链接]
发表于 2016-2-26 03:04:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是小甲鱼老师 栈和队列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;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 01:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表