Утечка памяти с выделяемым массивом в фортране 2008

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

program arrays

use, intrinsic :: iso_fortran_env, only: prec=>real64

implicit none

integer, allocatable :: array_1(:)
integer, allocatable :: array_2(:,:)

allocate(array_1(10))
allocate(array_2(10,10))

end program arrays

Я скомпилировал эту программу (arrays.f90) следующим образом (версия gfortran GNU Fortran (Ubuntu 5.5.0-12ubuntu1~16.04) 5.5.0 20171010)

gfortran -g -std=f2008 arrays.f90 -o arr

Затем запустив valgrind (valgrind ./arr), я нахожу

==13293== HEAP SUMMARY:
==13293==     in use at exit: 440 bytes in 2 blocks
==13293==   total heap usage: 21 allocs, 19 frees, 12,280 bytes allocated
==13293== 
==13293== LEAK SUMMARY:
==13293==    definitely lost: 440 bytes in 2 blocks
==13293==    indirectly lost: 0 bytes in 0 blocks
==13293==      possibly lost: 0 bytes in 0 blocks
==13293==    still reachable: 0 bytes in 0 blocks
==13293==         suppressed: 0 bytes in 0 blocks
==13293== Rerun with --leak-check=full to see details of leaked memory

Я не понимаю, почему valgrind говорит, что два массива не освобождаются после завершения программы.

Вывод valgrid не зависит от уровня оптимизации используемого компилятора, в отличие от этот вопрос об утечках памяти в фортране.


person PHY314    schedule 26.06.2020    source источник