我無法在任何地方找到它,即使它可能是微不足道的,我想確保我已經很好理解。我有4個問題(嚴格相關的):派生類型(在Fortran中)佔用多少個字節?這些地點是連續的嗎?還有一個指向派生類型的指針?
1)如果我在FORTRAN限定派生類型是這樣
TYPE :: node
INTEGER :: int
REAL :: REALfirst
REAL :: REALsecond
END TYPE
TYPE(node) :: var
allocate(var)
上述分配後,它佔用4個字節中對2單個整數和其它8-精度實數,總共12字節。它們是否連續位於記憶中?計算機如何存儲有關變量類型的信息?我想它需要一些額外的內存來保存它。
2)如果在上述的例子,而不是
TYPE(node) :: var
我會寫:
TYPE(node),POINTER :: var
我想,如果我編譯一個32位的可執行ALLOCATE語句將分配相同量的如上例所示。這是對的嗎?
3)現在,讓我們假設我聲明類型
TYPE :: node
INTEGER :: int
TYPE(node), POINTER :: BEFORE
TYPE(node), POINTER :: AFTER
END TYPE
TYPE(node) :: var
allocate(var)
這裏(如果32位編),將分配用於對於2個指針的整數和其他8 4字節,總共12個字節。這是正確的嗎?計算機又如何存儲有關變量類型的信息?在示例(3)中,如果我現在編寫ALLOCATE(var%BEFORE),則將其他12個字節分配給具有派生類型節點的變量,以及爲指針var分配的整數類型的4個字節%BEFORE(請參見示例3)現在已釋放,是否正確?
THANKS A.
我不認爲這個問題值得這麼多downwotes。海報可能有一些誤解,但他的問題是合法的。 –