同样,Fortran 中的指针数组。好吧,我有一个派生类型:
type :: t_context_pointer
type(t_context),pointer :: p_ctx
end type t_context_pointer
当我在主程序中执行时:
type(t_context_pointer),allocatable :: tab_ctx_ptr(:)
type(t_context),allocatable,target :: ctx
allocate(tab_ctx_ptr(1))
allocate(ctx)
tab_ctx_ptr(1)%p_ctx=>ctx
有用。但是当我使用函数调用时:
type(t_context_pointer),allocatable,target :: tab_ctx_ptr(:)
allocate(tab_ctx_ptr(n))
call alloc_ctx(tab_ctx_ptr,n,1)
与其他地方:
subroutine alloc_ctx(tab_ctx_ptr,n,i)
integer,intent(in) :: n,i
type(t_context_pointer),intent(inout) :: tab_ctx_ptr(n)
type(t_context),allocatable,target :: ctx
allocate(ctx)
tab_ctx_ptr(i)%p_ctx=>ctx
end subroutine
它稍后在代码中出现 seg_fault。这里有什么问题吗?