![](/img/trans.png)
[英]Difference in Fortran pointer and Fortran allocatable in calling C_F_POINTER
[英]fortran 90 allocatable array already allocated on calling type bound procedure
我在我的fortran代码中遇到了这个奇怪的runtype错误。 我有一个指向用户定义类型A的指针,作为用户定义类型B的元素。当我从类型B中的过程调用与类型A相关的过程时,我得到的分配数组已经分配了运行时错误。 有人看到过这个错误吗?
抱歉,无法显示代码。 但这里大致是正在发生的事情。
type B
type(A),pointer :: obj
contains
procedure :: do_something
end type B
type A
integer,allocatable:: long_array(:)
contains
procedure :: do_something_to_long_array
end type A
program main
type(B) :: obj1
type(A) ,target :: obj2
allocate(obj2%long_array(10))
obj1%obj=>obj2
call obj1%obj%do_something_to_long_array()
end program main
对do_something_to_long_array的调用给了我这个错误。 该过程在我的代码中实现,当直接在对象上调用时可以工作。 我也可以访问long_array内部的值。 但是我无法调用该子例程。
看起来您已经解决了所有问题,但就它的实际情况而言,“ A型”中可分配的数组很困难。 直到最近,在许多版本的FORTRAN90中,类型定义中都没有可分配数组。 而“已分配”错误是崩溃时返回的错误。 我认为这可能是为什么较新的编译器可以工作而旧的编译器却不能工作的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.