分别在Debug和release模式编译的程序区别这么大

wgc 2005-07-07 07:33:49
我的程序代码是

fscanf(rfp,"%d%d%f%s%f%f%f%f%f%f%f%f%f%f%f%f%f%f",
&skp,&station,&freq,comp,&s,&emag,&ephz,&hmag,&hphz,&res,
&phase,&pemag,&sephz,&pHmag,&sHphz,&Rho,&sPhz,&TMARES_SRES);
freq=(float) freqarry[j];
amps=Amps[i][j];
emag=E_mag[i][j];
ephz=E_phz[i][j];
hmag=H_mag[i][j];
hphz=H_phz[i][j];
res=Ressistivity[i][j];
phase=Phase[i][j];
fprintf(wfp,"%d %d %f %s %f %e %f %e %f %e %f %f %f %f %f %f %f %e\n",
skp,station,freq,comp,amps,emag,ephz,hmag,hphz,res,phase,pemag,sephz,pHmag,
sHphz,Rho,sPhz,TMARES_SRES);
源文件是
2 -2 32.00 ExHy 22.0 3.5954E+4 -367.6 5.3420E+1 -291.1 2.8311E+3 -76.5 0.0 0.0 0.4 4.3 0.6 3.0 2.8322E+3
在debug模式下编译的程序正常,
2 -2 32.000000 ExHy 22.000000 3.595400e+004 -367.600006 5.342000e+001 -291.100006 2.831100e+003 -76.500000 0.000000 0.000000 0.400000 4.300000 0.600000 3.000000 2.832200e
在release模式下编译的程序不正常,
2 -2 32.000000 ExHy吞? 22.000000 3.595400e+004 -367.600006 5.342000e+001 -291.100006 2.831100e+003 -76.500000 0.000000 0.000000 0.400000 4.300000 0.600000
为什么会这样?字符串有问题。
...全文
150 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
newbiestar 2005-07-17
  • 打赏
  • 举报
回复
恩,你越界访问了,因为"aaaa"其实占了五个字节……
wgc 2005-07-17
  • 打赏
  • 举报
回复
我得comp是定义为char comp[4],是不是应该定义为char comp[5]
newbiestar 2005-07-07
  • 打赏
  • 举报
回复
检查一下你的comp怎么定义的,Debug模式下面编译器会额外分配一些空间的,而Release用了优化选项,产生的空间分配不带有额外的空间

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧