Ошибка указателя массива символов отложенной длины с gfortran - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть два массива символов отложенной длины в gfortran.Я выделяю один из них, а затем указываю другой на него.Переменная-указатель имеет правильную длину символа, но не правильный размер массива.Программа завершается с ошибкой при попытке доступа к информации в указателе.

Я проверяю это с помощью: GNU Fortran (MacPorts gcc8 8.2.0_2) 8.2.0

Код нижепрекрасно работает с Intel Fortran в Windows.

program test

  character(len=:), pointer, dimension(:) :: charvara
  character(len=:), pointer, dimension(:) :: charvara_ptr

  allocate(character(len=10) :: charvara(3))
  charvara(:) = '0123456789'
  print *, len(charvara)
  print *, size(charvara)
  print *, charvara

  charvara_ptr => charvara
  print *, associated(charvara_ptr, charvara)
  print *, len(charvara_ptr)
  print *, size(charvara_ptr)
  print *, charvara_ptr

  print *, 'end'

end program test

Я бы ожидал, что длина, размер и содержимое charvara_ptr будут такими же, как и у charvara, но вместо этого я получаю следующее:

          10
           3
 012345678901234567890123456789
 T
  1708412736
           3
test(66553,0x7fff9e47c380) malloc: *** mach_vm_map(size=140734901800960) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
Operating system error: Cannot allocate memory
Memory allocation failure in xrealloc

Error termination. Backtrace:
#0  0x104fbe65f
#1  0x104fbeecd
#2  0x104fbf057
#3  0x104fbe0c9
#4  0x1050cc8e4
#5  0x1050c30db
#6  0x1050c8af5
#7  0x1050cbc6c
#8  0x1050cc712
#9  0x104fb3d80
#10  0x104fb3dde
...