我正在处理一个崩溃的代码。我意识到编译的程序在释放变量时会崩溃,但我不知道如何修复它。
当我运行代码时,会出现一个来自 Windows 的弹出窗口:
main.exe has stopped working.
Windows can check for a solution to the problem.
并且编译器显示消息Process returned -1073740940 (0xC0000374) execution time : 1.171 s
下面是代码示例:
Subroutine PoissonCode()
Use Mesh
Implicit none
Real(8), Allocatable :: u(:,:),v(:,:),p(:,:)
Character(50) :: Nome
Allocate(u(0:Imax,0:jmax),v(0:Imax,0:jmax),p(0:Imax,0:jmax),fx(0:Imax,0:jmax),fy(0:Imax,0:jmax))
Allocate(xd(0:Imax),yd(0:Jmax))
........Code Here...............
Deallocate(u,v,p,fx,fy,xd,yd)
Deallocate(xd,yd)
End Subroutine PoissonCode
我将完整的代码放在这里以供进一步调查。我还尝试在 Windows 7 x64 和 Windows XP x86 中使用不同版本的 GFortran 运行代码,但没有成功。
编辑:
代码的正确结尾是:
...
Deallocate(u,v,p,fx,fy)
Deallocate(xd,yd)
End Subroutine PoissonCode
更新:
我使用不同的编译器(英特尔 Visual Fortran)测试了代码,但仍然没有成功。