Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 数组的Fortran条目看起来是随机变化的_Memory_Fortran_Gfortran - Fatal编程技术网

Memory 数组的Fortran条目看起来是随机变化的

Memory 数组的Fortran条目看起来是随机变化的,memory,fortran,gfortran,Memory,Fortran,Gfortran,我一直在使用FORTRAN程序。我注意到我正在使用的一维矩阵中似乎存在随机变化。它是一个由4000个整数组成的矩阵。将值逐个添加到矩阵中,从索引1开始,对每个添加的值迭代1。矩阵没有完全“填充”,目前只有100个值放入矩阵中。因此,我们可以预期矩阵的前100个条目将是非零的(所有的附加值都是非零的),剩余的3900个条目将是0。然而,矩阵中的几个条目最终都是大负数,但我确信我的代码中没有任何部分涉及这些条目 是什么导致了这个问题?很抱歉,我不能发布代码供大家使用 该代码还有其他几个大矩阵,总共占

我一直在使用FORTRAN程序。我注意到我正在使用的一维矩阵中似乎存在随机变化。它是一个由4000个整数组成的矩阵。将值逐个添加到矩阵中,从索引1开始,对每个添加的值迭代1。矩阵没有完全“填充”,目前只有100个值放入矩阵中。因此,我们可以预期矩阵的前100个条目将是非零的(所有的附加值都是非零的),剩余的3900个条目将是0。然而,矩阵中的几个条目最终都是大负数,但我确信我的代码中没有任何部分涉及这些条目

是什么导致了这个问题?很抱歉,我不能发布代码供大家使用

该代码还有其他几个大矩阵,总共占用约100MB的空间。这可能是内存问题吗

谢谢

A“矩阵”是二维的;你的数组是一维的

事情不会改变,除非你要求他们改变


FORTRAN除了(我记得)在带标签的公共文件中初始化变量外,不初始化其他变量。因此,它们保证从垃圾值开始。尝试使用data语句初始化数据。如果必须初始化带标签的公用程序,则必须提供块数据子程序。

必须初始化数组,否则它几乎总是包含垃圾。这可以做到:

array = 0.0e0  ! real array


谢谢这似乎已经解决了问题。无需使用公共块和数据语句,您可以在声明中初始化变量,如integer::arr(10,10)=0。好的,说得清楚一点,我通过使用X(:)=0初始化解决了问题。您的跨步表达式不是必需的
x=0
应该可以完成这项工作。这个答案是错误的。通常,fortran编译器不会初始化任何内容。它可以标记给编译器,但在代码中这样做肯定更安全。在Fortran语言中,“初始化”是指特定的内容,而不是所示的赋值。您可能不是说
0.0e0
是双精度(对于每个示例,都有可用的类型转换)。您可以使用
=0
初始化(定义)任何Fortran数值类型变量。小整数是完全可表示的。
array = 0.0e0  ! double precision
array = 0  ! integer