0
比方說,我有一個包含一些大型陣列重複記憶Fortran中使用「吸氣」功能時
type, public :: MyObject
implicit none
real*8, allocatable, private :: array1, array2, ... etc
contains
procedure :: get_array1, get_array2, ... etc
end type MyObject
以及的對象「吸氣」功能
function get_array1(self) result(array1)
implicit none
class(MyObject), intent(in) :: self
real, dimension(size(self%array1)) :: array1
array1 = self%array1
end function get_array1
如果我使用在程序中的吸氣功能如下
somearray = MyObject%get_array1()
然後我將以array1
的值結束sto紅色在MyObject
和somearray
,這是浪費。然而,如果我直接傳遞的get_array1
結果到另一個子程序:
call a_subroutine(arg1, arg2, MyObject%get_array1())
,或者如果我指的是它直接在主程序中沒有將其分配給一個新的數組:
a_sum = sum(a_vector(:)*MyObject%get_array1())
我該怎麼最終存儲在內存中的array1的多個副本?或者在子程序調用或求和之後,包含函數返回值的內存是否被釋放?
你問是否創建了一個臨時數組,或者是否創建了一個臨時數組,它是否比所需的時間長? – francescalus
抱歉應該更清楚了。我在問臨時陣列是否會比需要的時間更長。 – quixedjetr