Fortran 95程序出现SIGSEGV段错误求助(附代码)
Fortran 95程序段错误(SIGSEGV)排查指南
数组越界检查:Fortran默认不做数组边界校验,这是段错误的头号元凶。编译时加
-fcheck=all参数让gfortran帮你定位问题:gfortran -fcheck=all your_code.f95 -o FILE.out运行后会直接报错指出越界的具体位置,不用自己瞎猜。
未初始化的内存:Python会自动初始化变量,但Fortran不会。检查所有数组、变量在使用前是否完成赋值;如果是动态数组,确认
ALLOCATE语句里的维度参数正确,没有写错数字或者用了未初始化的变量当维度。Mac ARM架构适配:gfortran在ARM平台可能存在内存对齐问题,编译时试试加
-fno-align-commons参数关闭强制对齐:gfortran -fno-align-commons your_code.f95 -o FILE.out或者用
-march=native让编译器针对ARM架构优化。文件IO错误:如果是写入文件时崩溃,检查文件单位号是否重复使用、打开模式是否正确,以及写入的数组维度和格式是否匹配(比如用
WRITE语句时,格式符和数组维度不对应导致越界)。栈溢出问题:如果声明了超大的静态数组,栈空间不够会触发段错误。把大数组改成动态分配(用
ALLOCATE/DEALLOCATE),或者执行程序前先增大栈限制:ulimit -s unlimited
内容的提问来源于stack exchange,提问作者Milka
相关产品推荐
相关产品推荐

