在派生类型中使用move_alloc

时间:2015-06-18 08:52:30

标签: fortran alloc derived-types

我编写了一个存储多维数组的派生类型。该数组将从文件读取到数组String.matches()。然后,我想使用成员bb转移到派生类型Space。 mvalloc的优点是不必分配两个可能产生内存问题的大型数组。

当我编译代码时,我收到错误

a

类型定义和相关子程序如下:

Call Move_Alloc (b, t% a)
               1
Error: 'from' argument of 'move_alloc' intrinsic 
at (1) must be ALLOCATABLE

1 个答案:

答案 0 :(得分:2)

正如错误消息所示,move_alloc的参数必须是可分配的。那是他们俩。 from是第一个,这必须是可分配的,以便从中移出分配。

你有

Subroutine space_mvalloc (t, b)

  Class (SField), Intent (InOut) :: t
  Real, Intent (InOut) :: b(:,:,:)

  Call Move_Alloc (b, t% a)
End Subroutine space_mvalloc

b这里不可分配。您应该添加该属性,并确保传入的实际参数是可分配的。

在调用move_alloc b之后,以及相应的实际参数将被取消分配。