debug版和release版编译程序运行时不同,请高手指点更正代码

[复制链接]
查看11 | 回复1 | 2010-7-30 15:28:02 | 显示全部楼层 |阅读模式
源码太长发到百度空间去了
http://hi.baidu.com/zhkm/blog/item/3b9beec40da083a48326ac12.html
我发现当输入第一个学生信息的时候才会release版本才会出现错误,接下来输的信息都没有错误。
这是两个版本输入学生信息后显示的不同结果:


回复

使用道具 举报

千问 | 2010-7-30 15:28:02 | 显示全部楼层
INFO *establish()函数有问题问题在这里: head=p2=(INFO *)malloc(LEN); printf("\n\t\t请输入学生姓名(输入Q&q退出输入):"); scanf("%s",a);这里的首先申请的空间并没有使用到,也就是说没有初始化,没有初始化的东西是很危险的,在后边的list函数里调用了sort函数排序,因为出现了没有初始化的内容,所以出现了release里最后的那个记录至于debug中正常的原因很简单,在前边的debug中你可能对某一内存区域进行了初始化,而后来的debug又恰恰把空间开辟在了这块空间上。ps.代码太丑了,贴在网页上的效果…… CSDN
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行