program main
integer:: a(1000,1000), b(1000,1000) !没有用allocatable,直接声明,不知道有何影响
a = 1
do i = 1, 5000
b = func(a)
end do
contains
function func(arg) result(output)
integer,intent(in):: arg(:,:)
integer,allocatable::output(:,:)
allocate(output(SIZE(arg,dim=1),SIZE(arg,dim=2)))!此处内存泄露,output没有自动释放
output = arg + 1
end function
end program
program main
integer,dimension(:,:),allocatable:: a,b
allocate(a(1000,1000), b(1000,1000))
a = 1
do i = 1, 5000
b = func(a)
end do
contains
function func(arg) result(output)
integer,intent(in):: arg(:,:)
integer,allocatable::output(:,:)
allocate(output(SIZE(arg,dim=1),SIZE(arg,dim=2)))!此处无内存泄露,每次返回后output自动释放
output = arg + 1
end function
end program
li913 发表于 2024-5-27 10:29
我debug模式测试了第一个代码,监控了内存使用量,从头到尾都是38M左右,没有内存泄露。编译器是 oneapi202 ...
下载.png (150.04 KB, 下载次数: 22)
愤怒的三炮 发表于 2024-5-27 13:18
内存已经到1个多G了。
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2 ...
li913 发表于 2024-5-27 17:35
这里显示的是整台电脑的内存使用量,你需要打开任务管理器,查看这个程序的内存使用量。 ...
愤怒的三炮 发表于 2024-5-27 18:50
不是,Debug步进时内存从几十兆增长至几个G
li913 发表于 2024-5-28 14:52
可能是编译器版本不同,某些版本有bug
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |