我正在處理崩潰的代碼。我意識到編譯後的程序在釋放變量時會崩潰,但我不知道如何解決它。釋放聲明導致崩潰
當我運行的代碼,從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作進一步調查。 我也嘗試在Windows 7 x64和Windows XP x86中運行不同版本的GFortran的代碼,但沒有成功。
編輯:
代碼正確的一端是:
...
Deallocate(u,v,p,fx,fy)
Deallocate(xd,yd)
End Subroutine PoissonCode
截至日期:
我測試了不同的編譯器代碼(英特爾視覺Fortran語言)和仍然沒有成功。
A **系統**崩潰?如[BSOD](http://en.wikipedia.org/wiki/Blue_Screen_of_Death)?如果不是,請不要這樣聲稱。 – user2246674
我在'deallocate'之前和之後放了'pause'語句。這讓我得出結論,釋放可能是崩潰的原因。 – Eleteroboltz
@HighPerformanceMark:不久前我有一個類似的問題:http://stackoverflow.com/questions/17452243/stalling-at-deallocate。 –