Я использую gfortran 8.4 в Ubuntu с символьной переменной отложенной длины, как в следующем примере:
PROGRAM test
IMPLICIT NONE
CHARACTER(LEN=:),ALLOCATABLE :: str
str = '10'
END PROGRAM test
Если я скомпилирую его с помощью:
gfortran-8 test.f90 -o test -O0
При запуске программа с использованием Valgrind я получаю утечку памяти:
==29119== HEAP SUMMARY:
==29119== in use at exit: 2 bytes in 1 blocks
==29119== total heap usage: 22 allocs, 21 frees, 13,522 bytes allocated
==29119==
==29119== LEAK SUMMARY:
==29119== definitely lost: 2 bytes in 1 blocks
==29119== indirectly lost: 0 bytes in 0 blocks
==29119== possibly lost: 0 bytes in 0 blocks
==29119== still reachable: 0 bytes in 0 blocks
==29119== suppressed: 0 bytes in 0 blocks
Однако, компилируя программу с помощью:
gfortran-8 test.f90 -o test -O1
, я получаю в Valgrind:
==29130== HEAP SUMMARY:
==29130== in use at exit: 0 bytes in 0 blocks
==29130== total heap usage: 21 allocs, 21 frees, 13,520 bytes allocated
==29130==
==29130== All heap blocks were freed -- no leaks are possible
Я делаю не понимаю, почему я получаю эту утечку памяти, когда во время компиляции не применяется оптимизация. Заранее спасибо.