|
发表于 2024-11-15 14:04:23
|
显示全部楼层
implicit real*8(a-h,o-z)
这种只是隐式定义,并不是没有定义。更没有释放一说。
只有 allocatable 动态分配的变量需要写代码释放。
常规定义的变量,当生命周期结束时,系统会自动释放。
不同位置的变量,其生命周期也不同。比如函数(子程序)的局部变量,当函数(子程序)返回时,生命周期就结束了。
而全局变量(请注意你正确理解了全局变量的含义),事实上 Fortran 并没有全局变量的说法,你说的可能是 common 区的变量,它们的生命周期会持续直到整个程序结束。
即便对于 allocatable 动态分配的变量,内存没有释放,一般也不会导致程序计算出错,顶多是内存占用比较大而已。
要把一个 Fortran 代码编译成DLL供给其他程序调用,需要注意很多事情:
包括但不限于:- 一次性使用的 Fortran 过程,变成可能多次被调用的过程,一些变量需要第二次调用时,再次初始化。
- 一些Open了但没有Close的文件,需要补全Close语句,以便第二次使用时正确的打开。
- 一些动态分配的变量,第二次分配前需要手动先释放。
|
|