Проверка того, что выделенная память была освобождена, является лишь частью битвы с памятью утечки.
Предположим, что программа выделяет мегабайт памяти в течение каждой секунды работы программы и что вся эта выделенная память освобождается непосредственно перед завершением программы. Поскольку вся выделенная память в конечном итоге освобождается, это, строго говоря, не утечка. На практике это приводит к огромной утечке, если ожидается, что программа будет работать в течение длительного времени.
Предположим, что программа может быть переписана так, чтобы все, кроме крошечной крошечной части этого мегабайта в секунду, были освобождены на лету, причем эти крошечные экскаваторы оставшейся выделенной памяти снова были освобождены при завершении программы. Все-таки не утечка, строго говоря, но эта программа, безусловно, лучше себя ведет, чем оригинальная версия. Он по-прежнему имеет крошечную утечку времени выполнения, поэтому программа может создавать проблемы, если она работает в течение нескольких недель.
Теперь предположим, что программа может быть переписана, поэтому потребление памяти навсегда ограничено некоторым разумным пределом. Эта ограниченность во времени является, пожалуй, более важной функцией, чем освобождение всей выделенной памяти по времени завершения. Доказательство этой ограниченности времени выполнения сложно. Тестирование того, что вся выделенная память освобождается к моменту завершения программы, намного проще. Коммерческие инструменты, как правило, сосредоточены на последнем для проверки утечки.
Не работает на окнах. – SigTerm
Вы правы. Я голосовал за ваш ответ, поскольку он более полный, чем мой :) –