我正在使用 valgrind 来查找我的代码中的错误。我使用的命令是
valgrind --leak-check=yes ./a.out
我-g
只用代码编译代码。我收到许多指向单个写入行的错误(三个打印值已初始化且定义明确)。
write (22,*) avlength, stdlength, avenergy
所有的Conditional jump or move depends on uninitialised value(s)
错误。所述行是从一堆行打印到单个文件的第二行。在错误结束时,我又得到了两个,一个指向打开文件的行
resStep = int(conf*100/iterate)
if (resStep.lt.10) then
write (resFile, "(A5,I1)") "res00",resStep
elseif (ResStep.lt.100) then
write (resFile, "(A4,I2)") "res0",resStep
else
write (resFile, "(A3,I1)") "res",resStep
endif
open (unit=22,file=trim(resFile),status='replace',
c action='write')
resStep
是整数。错误是Syscall param write(buf) points to uninitialised byte(s)
。最后,Address 0x52d83f4 is 212 bytes inside a block of size 8,344 alloc'd
刷新文件时(在关闭文件之前)出现错误。
我在这里找不到任何逻辑。如果问题在于以错误的方式打开文件,我不会在第一行得到错误吗?
我使用 f95 编译它,我的 gcc 版本是 4.1.2。我什么都升级不了。