fortran程序報錯:
program received signal sigsegv:segmentation fault-invalid memory reference
1x0.......
1x0.......
core dumped
內容解讀:1x0等代號代表內存地址,即內存中存儲的函數和變量。如果編譯時在gfortran后加入-g選項,即可在報錯的時候看到該地址對應的函數名稱。
報錯原因:內存溢出,函數中給變量聲明的內存空間太小。
解決方式:gdb調試,watch監視全局變量的內存地址,然后在聲明中給變量分配足夠的內存空間。
內存溢出的另一種表現:沒有報錯,但是全局變量的值會發生改變!
這類錯誤非常隱蔽,當某個變量內存溢出時,會占用其他全局變量的內存空間,導致一些全局變量歸零,但是這類錯誤往往沒有任何報錯提示,只能一步一步輸出,或是在GDB中監控。