【发布时间】:2015-11-04 03:41:51
【问题描述】:
我正在查看一个 Fortran 函数,该函数将(指针)数组返回到固定长度的字符串。像这样的:
FUNCTION F(N)
INTEGER :: N
CHARACTER(LEN=16) :: F(N)
F(1:N) = 'DEFAULT'
...
END FUNCTION F
该函数计算 N 个字符串,据我了解,它会尝试以数组的形式返回这些字符串。
调用者有:
...
ALLOCATE(X(N))
X = F(N)
但是当 F 返回时我得到一个段错误。作者声称他在编译和运行它时没有发现任何问题。我试图了解何时为实际字符串分配内存以及返回后内存是否在范围内?有没有
CHARACTER(LEN=16) :: F(N)
line 分配 N*16 个字符,然后在 F 中分配 N 个指向它们的指针?我来自C所以也许我完全错过了这个,请温柔。 我怀疑F实际指向的内存在返回后没有绑定(我认为它可能在堆栈上等)
感谢任何见解。
【问题讨论】: