Я немного профилирую память для своего программного обеспечения, и после выполнения стандартной проверки утечки памяти с помощью следующей команды valgrind
valgrind --tool=memcheck --leak-check=full ./path_to_program
я получил следующее резюме:
== 12550 == РЕЗЮМЕ УТЕЧКИ:
== 12550 == определенно потеряно: 597 170 байтов в 7 блоках
== 12550 == косвенно потеряно: 120 байтов в 10 блоках
== 12550 == возможно потеряно: 770 281 байт в 1455 блоках
== 12550 == все еще достижимо: 181 189 байт в 2 319 блоках
== 12550 == подавлено: 0 байт в0 блоков
== 12550 == Доступные блоки (те, на которые был найден указатель) не отображаются.
== 12550 == Чтобы увидеть их, перезапустите с: --leak-check = full --show-достижимый = да
== 12550 ==
== 12550 == Для подсчета обнаруженных и подавленных ошибок, повторно запустите: -v
== 12550 == РЕЗЮМЕ ОШИБОК: 325 ошибок из 325 контекстов (исключено: 176 из 11)
Это не очень хорошо для меня выглядит, поэтому мой вопрос
Почему моя программа не взрывается, если она имеет все эти утечки?
А также в чем разница между:
- определенно потеряно
- косвенно потеряно
- возможно потеряно
- все еще достижимо
и как я могу попытаться исправить их?