在并行程序中调用dll库后,内存如何释放?
我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 precisionmypi, 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 编辑 ] 我自己查了一帮助文件,不知是不是采用dllmain函数就可以解决,但dllmian函数如何应用,帮助文件可没有写,请高手们指点一下。谢谢!
页:
[1]