У меня есть два массива символов отложенной длины в 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