debug版和release版编译程序运行时不同,请高手指点更正代码
发布网友
发布时间:2022-09-06 20:30
我来回答
共1个回答
热心网友
时间:2024-11-19 08:33
INFO
*establish()函数有问题
问题在这里:
head=p2=(INFO
*)malloc(LEN);
printf("\n\t\t请输入学生姓名(输入Q&q退出输入):");
scanf("%s",a);
这里的首先申请的空间并没有使用到,也就是说没有初始化,没有初始化的东西是很危险的,在后边的list函数里调用了sort函数排序,因为出现了没有初始化的内容,所以出现了release里最后的那个记录
至于debug中正常的原因很简单,在前边的debug中你可能对某一内存区域进行了初始化,而后来的debug又恰恰把空间开辟在了这块空间上。
ps.代码太丑了,贴在网页上的效果……
CSDN中的部分解释:
====================================================================
Debug下有些变量会自动赋初值的(如果代码没有赋的话)
Release下变量没有显式赋初值的话变量的值就说不定了