我在Fortran代碼中收到了這個奇怪的runtype錯誤。我有一個指向用戶定義類型A的指針,作爲用戶定義類型B的一個元素。當我從類型B中的過程調用與類型A相關的過程時,我得到已分配的數組已分配的運行時錯誤。有沒有人看到這個錯誤?Fortran 90可分配數組已在撥號類型綁定過程中分配
對不起顯示驗證碼。但這裏大概是發生了什麼。
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內的值也。但我無法調用子程序。
是的,我見過那個錯誤。當您嘗試分配已分配的數組時通常會發生這種情況。我沒有看到的是你的任何代碼都可以幫助你。 – 2012-07-18 11:53:51
問題已解決。這與我使用的英特爾編譯器的版本有關。在轉向新版本時,問題已解決。 – 2012-07-18 18:04:12