C语言free的时候程序出错

C语言free的时候程序出错,第1张

这可能跟你的那几个strncpy的使用方式有关。我查了一下这个函数的手册,大致是这么说。这个函数在源比size大时,copy size个字符,不包括null。在源小于size时,向目标填充足够的null,直至size指定的大小,这是标准C规定的。

这意味着你的调用点会造成多个缓冲区越界,因为它们都被追加了很多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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11466675.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存