爱占便宜的闹闹 发表于 2015-2-27 14:53:36

小甲鱼销毁栈坑了我一上午!!!

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;
}
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;
}
建了一个数组结果一个一个地释放,当然我也是当局者迷,调了一个上午,总是第二个元素释放失败:huffy::huffy::huffy::huffy:

不要叫我小六 发表于 2015-3-3 14:25:30

你为什么要一个一个释放?,直接new。。。。然后delete []s->base就好啦

ryoko 发表于 2015-4-1 21:09:36

刚刚学习 发现了错误 是这样的 一个malloc对应一个free 不需for循环,只需一次free就可以了

微笑看世界 发表于 2015-4-14 19:11:40

好高端啊

Bill好想 发表于 2015-4-19 23:27:03

这有什么问题吗?运行起来一点问题都没有啊!经本人测试可以成功销毁栈。

d5zhao 发表于 2015-4-21 00:21:21

签到,回帖赚鱼币

采木耳的蘑菇 发表于 2015-5-5 14:07:58

进来看看

laishiba 发表于 2015-5-14 16:47:58

看看

citian3094 发表于 2015-5-19 18:32:09

谢谢分享~

零℃飛飏 发表于 2016-4-25 21:01:50

请问下你这个销毁函数运行成功了吗?我也是一样的程序,调用销毁函数后,程序就停在这儿了

18630145849 发表于 2016-12-24 14:15:44

零℃飛飏 发表于 2016-4-25 21:01
请问下你这个销毁函数运行成功了吗?我也是一样的程序,调用销毁函数后,程序就停在这儿了

for( i=0; i < len; i++ ){
free( s->base );
s->base++;
}这样肯定不行,s->base已经销毁了,怎么还s->base++,还有s->base++一个指针++是什么鬼


谦虚求学 发表于 2016-12-24 15:03:19

楼主好傻 啊 {:5_99:}{:5_92:}

谦虚求学 发表于 2016-12-24 15:03:50

楼主好傻 啊 {:5_92:}

啊dong1992 发表于 2016-12-26 22:22:17

不明觉厉

HANG- 发表于 2020-7-20 11:58:48

Bill好想 发表于 2015-4-19 23:27
这有什么问题吗?运行起来一点问题都没有啊!经本人测试可以成功销毁栈。

????
页: [1]
查看完整版本: 小甲鱼销毁栈坑了我一上午!!!