C语言free的时候程序出错

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

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

这意味着你的调用点会造成多个缓冲区越界,因为它们都被追加了很多0(我想你的几个参数应该都不到100大小吧?)

试着用正确的方式改写那部分再试试

任何时候都应该检查目标缓冲区是否有足够的空间容纳size个字节,当用memcpy或者strncpy这类函数时。

或空间是否不小于源缓冲区,当用strcpy这类自动检查null结尾的函数时,还要算上copy会自动包含的null结尾。

ctrl+s保存按理说没有错的,我这里有一个c-free

35的压缩包,你从新安装一个。不行的话,这个为问题是你这个软件的问题还是程序的保存路径问题,你把你的邮箱号给我,我实验了一遍我c语言也用的是c-free

你申请的是double类型的变量,在scanf与printf中应该用%lf,而不是%f;还有scanf("%f,%f",&r,&h);最好改成scanf("%lf%lf",&r,&h),即把逗号去掉,否则你的输入必须也有逗号,如:1,2。

下面是我改的代码:运行时可直接输入如:1 2 回车

#define PI 31415926

#include<stdioh>

#include<mathh>

void main()

{double r,h,l,s1,s2,v1,v2;

scanf("%lf%lf",&r,&h);

l=2PIr;

s1=PIpow(r,2);

s2=4PIpow(r,2);

v1=40/3PIpow(r,3);

v2=2PIpow(r,2)h;

printf("l=%lf\ns1=%lf\ns2=%lf\nv1=%lf\nv2=%lf\n",l,s1,s2,v1,v2);

}

以上就是关于C语言free的时候程序出错全部的内容,包括:C语言free的时候程序出错、c-free 错误问题、c-free运行出错等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9797626.html

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

发表评论

登录后才能评论

评论列表(0条)

保存