我目前正在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)'改成了。纠正指数后,问题不再发生。
答案 0 :(得分:1)
当您访问数组越界时,可能会发生任何事情。你写入内存的一些未知部分,这可能会触发其他随机错误。
该程序不符合标准,其行为未定义。你什么都不能期待。