| 24小時(shí)熱門版塊排行榜 |
| 10 | 1/1 | 返回列表 |
| 查看: 2588 | 回復(fù): 9 | ||
todd0226新蟲(chóng) (初入文壇)
|
[求助]
fortran 調(diào)用子程序時(shí),出現(xiàn)program exception-access violation 已有1人參與
|
|
大家好,本人fortran新人,編了一段程序,但是在運(yùn)行時(shí)出現(xiàn)了如題所示的錯(cuò)誤! 因?yàn)槌绦蛱L(zhǎng),而且錯(cuò)綜復(fù)雜,不方便貼出,敬請(qǐng)見(jiàn)諒! 下面我進(jìn)行一些相關(guān)的描述,請(qǐng)各位指導(dǎo)! 我通過(guò)debug調(diào)試出問(wèn)題的出處:錯(cuò)誤信息出現(xiàn)在subroutine info_nd(...)這一行 其中:step,nelm, nj,nnode 是在主程序中聲明的整數(shù)常量 剩余的變量全是數(shù)組,全部是動(dòng)態(tài)變量,而且我全部在主程序中進(jìn)行了allocate,各個(gè)數(shù)組的維數(shù)以及上下界和子程序中聲明的完全一樣。 調(diào)試時(shí),屏幕輸出了“info_nd調(diào)試開(kāi)始”,沒(méi)有輸出“info_nd調(diào)試第一點(diǎn)”,而且綠色箭頭指向了subroutine info_nd(...),所以我斷定問(wèn)題出處在這一行。 我網(wǎng)上搜了一下,這種問(wèn)題的可能原因之一是數(shù)組越界,但是我感覺(jué)我的這種定義數(shù)組的形式應(yīng)該不會(huì)造成這個(gè)問(wèn)題(?) 此外,有這樣一個(gè)現(xiàn)象:nj = 6904,nelm=6804的時(shí)候,無(wú)論debug還是release都會(huì)在subroutine info_nd(...)這一行出現(xiàn)如題目所說(shuō)的問(wèn)題;但是當(dāng)我把nj,nelm調(diào)小了之后(<6000),發(fā)現(xiàn)debug下可以運(yùn)行成功,但是release仍然出現(xiàn)上述問(wèn)題。 所以在此請(qǐng)教大家,懇請(qǐng)予以指導(dǎo)!謝謝! 主程序 program main integer,parameter:: step=10,nj=6904,nelm=6804,nnode=4 ...... ...... do istp = 1,step ...... write(*,*)'info_nd調(diào)試開(kāi)始' call info_nd(step,istp,nelm,nj,nnode,maxgint,id_el_nd,id_nd_el,num_nd_el,gint_t,gint,elarea,stgp,svars_gp,sig11_nd,sig22_nd,sig12_nd,mises_nd) ...... end do ...... end !主程序結(jié)束 出現(xiàn)問(wèn)題的子程序 subroutine info_nd(step,istp,nelm,nj,nnode,maxgint,id_el_nd,id_nd_el,num_nd_el,gint_t,gint,elarea,stgp,svars_gp,sig11_nd,sig22_nd,sig12_nd,mises_nd) implicit none integer step,istp,nelm,nj,nnode integer:: id_el_nd(nelm,nnode),id_nd_el(nj,nelm),num_nd_el(nj),gint_t(nelm+1,step),gint(nelm,step),maxgint(step) real*8:: svars_gp(nelm,20*24,step),elarea(nelm),stgp(3,24*nelm,step) real*8:: sig_nd_temp(nnode,3),sig11_nd_temp(nj,nelm),sig22_nd_temp(nj,nelm),sig12_nd_temp(nj,nelm) real*8:: sig11_nd(nj,step),sig22_nd(nj,step),sig12_nd(nj,step),mises_nd(nj,step),area(nj) real*8:: NTN(nnode,nnode),invNTN(nnode,nnode) real*8,allocatable:: sig_gp(:, ,N(:, ,NT(:, ,invN(:,![]() real*8 sigp,tigp integer gint_el,gint_iel integer iel,igp,i,j,ii write(*,*)'info_nd調(diào)試第一點(diǎn)' ...... end |
鐵桿木蟲(chóng) (著名寫(xiě)手)
工程和科學(xué)數(shù)值計(jì)算咨詢
新蟲(chóng) (初入文壇)
新蟲(chóng) (初入文壇)
|
我在Intel visual Fortran中找到了/check:bound /trackback,然后調(diào)試發(fā)現(xiàn)沒(méi)有出現(xiàn)數(shù)組越界的問(wèn)題。 在運(yùn)行到subroutine info_nd(...)時(shí), 提示信息說(shuō):其原因可能是堆被破壞,這說(shuō)明NASA_mb05_p1.exe中或它 所加載的任何DLL中有Bug。原因也可能是用戶在NASA_mb05_p1.exe具有焦點(diǎn)時(shí)按下了F12 其中,不是后一個(gè)原因,在運(yùn)行時(shí)我并沒(méi)有碰到鍵盤,關(guān)于第一個(gè)原因,能從中得到哪些信息呢? |
鐵桿木蟲(chóng) (著名寫(xiě)手)
工程和科學(xué)數(shù)值計(jì)算咨詢
新蟲(chóng) (初入文壇)
|
下面是調(diào)試程序運(yùn)行時(shí)出現(xiàn)的信息: “NASA_mb05_p1.exe”: 已加載“D:\XDT\IVF\NASA_mb05_p1\NASA_mb05_p1\x64\Debug\NASA_mb05_p1.exe”,已加載符號(hào)。 “NASA_mb05_p1.exe”: 已加載“C:\Windows\System32\ntdll.dll” “NASA_mb05_p1.exe”: 已加載“C:\Windows\System32\kernel32.dll” “NASA_mb05_p1.exe”: 已加載“C:\Windows\System32\KernelBase.dll” “NASA_mb05_p1.exe”: 已加載“D:\Program Files (x86)\Intel\Composer XE 2013\redist\intel64\compiler\libiomp5md.dll”,已加載符號(hào)(去除源信息)。 “NASA_mb05_p1.exe”: 已加載“C:\Windows\System32\imagehlp.dll” “NASA_mb05_p1.exe”: 已加載“C:\Windows\System32\msvcrt.dll” “NASA_mb05_p1.exe”: 已加載“C:\Windows\System32\advapi32.dll” “NASA_mb05_p1.exe”: 已加載“C:\Windows\System32\sechost.dll” “NASA_mb05_p1.exe”: 已加載“C:\Windows\System32\rpcrt4.dll” “NASA_mb05_p1.exe”: 已卸載“C:\Windows\System32\advapi32.dll” “NASA_mb05_p1.exe”: 已卸載“C:\Windows\System32\sechost.dll” “NASA_mb05_p1.exe”: 已卸載“C:\Windows\System32\rpcrt4.dll” “NASA_mb05_p1.exe”: 已加載“C:\Windows\System32\advapi32.dll” “NASA_mb05_p1.exe”: 已加載“C:\Windows\System32\sechost.dll” “NASA_mb05_p1.exe”: 已加載“C:\Windows\System32\rpcrt4.dll” “NASA_mb05_p1.exe”: 已卸載“C:\Windows\System32\advapi32.dll” “NASA_mb05_p1.exe”: 已卸載“C:\Windows\System32\sechost.dll” “NASA_mb05_p1.exe”: 已卸載“C:\Windows\System32\rpcrt4.dll” NASA_mb05_p1.exe 中的 0x0000000140586727 處最可能的異常: 0xC0000005: 寫(xiě)入位置 0x000000000000f000 時(shí)發(fā)生訪問(wèn)沖突 “NASA_mb05_p1.exe”: 已加載“C:\Windows\System32\dbghelp.dll” HEAP[NASA_mb05_p1.exe]: HEAP: Free Heap block 20a80 modified at 21000 after it was freed Windows 已在 NASA_mb05_p1.exe 中觸發(fā)一個(gè)斷點(diǎn)。 其原因可能是堆被損壞,這說(shuō)明 NASA_mb05_p1.exe 中或它所加載的任何 DLL 中有 Bug。 原因也可能是用戶在 NASA_mb05_p1.exe 具有焦點(diǎn)時(shí)按下了 F12。 輸出窗口可能提供了更多診斷信息。 程序“[3172] NASA_mb05_p1.exe: 本機(jī)”已退出,返回值為 0 (0x0)。 不知道從“HEAP[NASA_mb05_p1.exe]: HEAP: Free Heap block 20a80 modified at 21000 after it was freed”中能得到什么信息嗎 |
鐵桿木蟲(chóng) (著名寫(xiě)手)
工程和科學(xué)數(shù)值計(jì)算咨詢
新蟲(chóng) (初入文壇)
銅蟲(chóng) (初入文壇)
銅蟲(chóng) (初入文壇)
| 10 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|