无法在派生类型中打印可分配的分配状态
Unable to print allocated status of a allocatable inside a derived type
我想知道为什么这段代码returns在最后打印时出错
gfortran 7.4.0 失败但 ifort 18.0.3 运行良好。
program test
implicit none
type :: syntax
integer, allocatable :: f(:)
end type
type(syntax), allocatable :: rhs(:)
allocate(rhs(2))
print*, allocated(rhs(2)%f)
print*, allocated(rhs(size(rhs))%f)
end program
gfortran 错误是:
F
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
Backtrace for this error:
#0 0x7f4cf40442da in ???
#1 0x7f4cf4043503 in ???
#2 0x7f4cf3c76f1f in ???
#3 0x55aa522e5e50 in test
at /home/pena/Escritorio/c.f90:10
#4 0x55aa522e5f0d in main
at /home/pena/Escritorio/c.f90:11
Violación de segmento (`core' generado)
这是 gfortran 中的错误,版本 8 中不存在。
如果您无法升级编译器,那么有一个简单的替代方法:只需为 size(rhs)
:
使用一个临时变量
hack = SIZE(rhs)
print*, allocated(rhs(hack)%f)
使用 gfortran 7.4.0 给出输出:
F
F
我想知道为什么这段代码returns在最后打印时出错
gfortran 7.4.0 失败但 ifort 18.0.3 运行良好。
program test
implicit none
type :: syntax
integer, allocatable :: f(:)
end type
type(syntax), allocatable :: rhs(:)
allocate(rhs(2))
print*, allocated(rhs(2)%f)
print*, allocated(rhs(size(rhs))%f)
end program
gfortran 错误是:
F
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
Backtrace for this error:
#0 0x7f4cf40442da in ???
#1 0x7f4cf4043503 in ???
#2 0x7f4cf3c76f1f in ???
#3 0x55aa522e5e50 in test
at /home/pena/Escritorio/c.f90:10
#4 0x55aa522e5f0d in main
at /home/pena/Escritorio/c.f90:11
Violación de segmento (`core' generado)
这是 gfortran 中的错误,版本 8 中不存在。
如果您无法升级编译器,那么有一个简单的替代方法:只需为 size(rhs)
:
hack = SIZE(rhs)
print*, allocated(rhs(hack)%f)
使用 gfortran 7.4.0 给出输出:
F
F