hmm,
it seems to only work partially, seems OK when all in same obj file.
but it looks like when the call to get_storage2 is in a DLL, it grabs about 60Mb memory (according to resmon) even if i've only requested 4 bytes! so my test prog soon runs out of gas.
K
MAIN:
!ftn95$free
integer addr(10), get_storage2@
character*4 :: ch
c_external return_storage2@ '__release_memory'(VAL3)
do i=1,10
call a_vmget(4, addr(i), ir)
! addr(i)=get_storage2@(4, 0)
write(*, *) addr(i)
end do
read(*,*)ch
do i=1,10
call a_vmfree(addr(i))
! call return_storage2@(addr(i))
write(*, *) addr(i)
end do
read(*,*)ch
end
DLL:
!ftn95$free
SUBROUTINE A_VMGet (nb, IA, IRET)
INTEGER(KIND=7) IA, get_storage2@
ia = get_storage2@(nb,0)
return
END SUBROUTINE
!** Free virtual memory ***** A_VMFree *****
SUBROUTINE A_VMFree (IA)
c_external return_storage2@ '__release_memory'(VAL3)
INTEGER(KIND=7) IA
call return_storage2@(ia)
END SUBROUTINE