小甲鱼销毁栈坑了我一上午!!!
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: 你为什么要一个一个释放?,直接new。。。。然后delete []s->base就好啦 刚刚学习 发现了错误 是这样的 一个malloc对应一个free 不需for循环,只需一次free就可以了 好高端啊 这有什么问题吗?运行起来一点问题都没有啊!经本人测试可以成功销毁栈。 签到,回帖赚鱼币 进来看看 看看 谢谢分享~ 请问下你这个销毁函数运行成功了吗?我也是一样的程序,调用销毁函数后,程序就停在这儿了 零℃飛飏 发表于 2016-4-25 21:01
请问下你这个销毁函数运行成功了吗?我也是一样的程序,调用销毁函数后,程序就停在这儿了
for( i=0; i < len; i++ ){
free( s->base );
s->base++;
}这样肯定不行,s->base已经销毁了,怎么还s->base++,还有s->base++一个指针++是什么鬼
楼主好傻 啊 {:5_99:}{:5_92:} 楼主好傻 啊 {:5_92:} 不明觉厉 Bill好想 发表于 2015-4-19 23:27
这有什么问题吗?运行起来一点问题都没有啊!经本人测试可以成功销毁栈。
????
页:
[1]