|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我windows环境下用CVF6.6编程,我在并行程序中调用dll后(如下)发现内存无法释放,但是在串行程序中却可以释放掉,请高手帮助解决呀,谢谢!
program main
use msfwin
character *40 dllname, procname
integer dllhandle,procaddress,nn
data dllname/'test.dll'c/
data procname/'xint'c/
#include "mpif.h"
interface
subroutine xint(x)
implicit none
integer x
end subroutine xint
end interface
pointer (procaddress,xint)
double precision mypi, pi, h, sum, x, a
integer n, myid, numprocs, i, rc
call MPI_INIT( ierr )
call MPI_COMM_RANK( MPI_COMM_WORLD, myid, ierr )
call MPI_COMM_SIZE( MPI_COMM_WORLD, numprocs, ierr )
print *, "Process ", myid, " of ", numprocs, " is alive"
sizetype = 1
sumtype = 2
n=30
call MPI_BCAST(n,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierr)
h = 1.0d0/n
sum = 0.0d0
do i = myid+1, n, numprocs
dllhandle=loadlibrary(dllname)
if (dllhandle.eq.0) then
write(*,*)'can nat load dll!'
stop
endif
procaddress=getprocaddress(dllhandle,procname)
if (procaddress.eq.0) then
write(*,*)'can not get procedure from dll!'
stop
endif
call xintout(i)
call FreeLibrary(dllhandle)
enddo
call MPI_REDUCE(mypi,pi,1,MPI_DOUBLE_PRECISION,MPI_SUM,0, MPI_COMM_WORLD,ierr)
call MPI_FINALIZE(rc)
end
[ 本帖最后由 zhmeww 于 2012-9-2 13:49 编辑 ] |
|