这意味着你的调用点会造成多个缓冲区越界,因为它们都被追加了很多0.(我想你的几个参数应该都不到100大小吧?)
试着用正确的方式改写那部分再试试
任何时候都应该检查目标缓冲区是否有足够的空间容纳size个字节,当用memcpy或者strncpy这类函数时。
或空间是否不小于源缓冲区,当用strcpy这类自动检查null结尾的函数时,还要算上copy会自动包含的null结尾。
printf(" Hsh's height to the top of his head,in whole feet:")
scanf("%1d,&feet")这里你输入错了,改为scanf(“%1d“,&feet);
printf("inches:")
scanf("%1d",&inches)
Hsh = feet*inches_per_foot + inches
所以编程这东西,检查的时候就是要仔细核对,有一点问题,哪怕程序不崩溃出来的结果也是不对的,学习阶段经常犯的错误就是这些,还有最好加上注释不要嫌麻烦,祝你好运
void rearin(){
lianbiao *p
p=(lianbiao*)malloc(sizeof(lianbiao*))这个有问题.
改成这样p=(lianbiao*)malloc(sizeof(lianbiao)).
下面的删除你改成这样看看 我没调试。
if(a==NULL) printf("no\n")
else{
if(b == a)//就多加这一个IF
{top = a->next
free(a)
return
}
while(b->next!=a)
b=b->next
a=a->next
free(b->next) //没错,就是此处有问题
b->next=a
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)