Fortran变量被改变了

时间:2015-04-13 22:02:33

标签: fortran linear-algebra numerical-methods

我目前正在Fortran中编写一个特征值算法。我只是想了解一下我遇到的问题的原因。我追踪了这个问题,但我想知道问题是如何相关的。

具体来说,我正在按如下方式对LAPACK进行一系列调用

call DGEMV('T', ROWS, COLUMNS, 1.0_dp, updates(j,k), LEADING_DIM, v, 1, 0.0_dp, w, 1)

call DGER(ROWS, COLUMNS, -2.0_dp, v, 1, w, 1, updates(j,k), LEADING_DIM)

问题是我的索引j和k开始子矩阵操作是不正确的。执行上述代码后,即使启用了边界检查,也没有错误。但是,一个完全不相关的变量被正确地传递为' intent(in)'改成了。纠正指数后,问题不再发生。

1 个答案:

答案 0 :(得分:1)

当您访问数组越界时,可能会发生任何事情。你写入内存的一些未知部分,这可能会触发其他随机错误。

该程序不符合标准,其行为未定义。你什么都不能期待。