Я работаю над кодом, который сбой. Я понял, что скомпилированная программа вылетает, когда она освобождает переменные, но я не знаю, как ее исправить.Deallocate Statement Causes Crash
Когда я запускаю код, всплывающее окно с 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
Я положил полный код here для дальнейшего изучения. Я также пытался запустить код с различными версиями GFortran в Windows 7 x64 и Windows XP x86 без успеха.
Edit:
Правильный конец коды:
...
Deallocate(u,v,p,fx,fy)
Deallocate(xd,yd)
End Subroutine PoissonCode
Дата:
Я тестировал код с другим компилятором (Intel Visual Fortran) и до сих пор нет успеха.
A ** System ** сбой? Как в [BSOD] (http://en.wikipedia.org/wiki/Blue_Screen_of_Death)? Если нет, пожалуйста, не претендуйте на это. – user2246674
Я положил оператор 'pause' до и после' deallocate'. Это позволяет мне сделать вывод о том, что причиной отказа является, вероятно, причина отказа от дезактивации. – Eleteroboltz
@HighPerformanceMark: У меня была аналогичная проблема не так давно: http://stackoverflow.com/questions/17452243/stalling-at-deallocate. –