代码之家  ›  专栏  ›  技术社区  ›  Stefano Borini

指针和可分配的区别

  •  5
  • Stefano Borini  · 技术社区  · 14 年前

    这两种密码有什么区别

    type Foo
       real, allocatable :: bar(:)
    end type
    

    type Foo
       real, pointer :: bar(:)
    end type
    

    尤其是当涉及到以下代码时:

    type(Foo) :: myfoo
    allocate(myfoo%bar(10))
    
    1 回复  |  直到 14 年前
        1
  •  10
  •   Community CDub    8 年前

    ALLOCATABLE arrays are more efficient

    PROGRAM main
    
      IMPLICIT NONE
    
      TYPE :: foo
        REAL, DIMENSION(:), ALLOCATABLE :: bar
      END TYPE foo
    
      TYPE(foo) :: my_foo
    
      ALLOCATE (my_foo%bar(10))
      ALLOCATE (my_foo%bar(10))
    
    END PROGRAM main
    

    Fortran runtime error: Attempting to allocate already allocated variable 'my_foo'
    

    推荐文章