xiaoniu 发表于 2006-12-6 03:33:14

求助fortran一个简单问题

当写好一个程序后,要计算这个程序大概所需的内存。如果我的程序是单精度,有一个主程序,和两个子程序。

--主程序中有如下主要变量---
program main
real x1(nx),x2(nx),x3(nx),x4(nx),x5(nx),x6(nx)

call sub1(x1,x2,x3,x4,x5)
call sub2(x1,x2,x3)

-----子程序1---
subroutine sub1(x1,x2,x3,x4,x5)
realx1(nx),x2(nx),x3(nx),x4(nx),x5(nx)

-----子程序2---
subroutine sub2(x1,x2,x3)
realx1(nx),x2(nx),x3(nx)

===========================
在计算所需的最大的内存时,我是这样算的:
(主程序6个变量+子程序1的5个变量)*nx*4

我的问题是,子程序1这5个变量来自主程序,是否也需要算进来?子程序2和子程序1相比较只取其中其中变量多的是不是就可以了,不需要两个都算进来?

[ 本帖最后由 xiaoniu 于 2006-12-6 03:34 编辑 ]

freefrompassion 发表于 2006-12-6 12:54:47

我觉得如果你的子程序中没有另外分配变量的话,只需要计算主程序的六个变量就可以了,因为Fortran的参数传递默认是传地址的,并不会对实参做拷贝再传。

xiaoniu 发表于 2006-12-6 13:35:07

谢谢freefrompassion!!
也就是说:如果我将主程序中的某几个变量用来做子程序的输入变量,那么这几个变量不需要再额外占用内存了。
页: [1]
查看完整版本: 求助fortran一个简单问题