Здравствуйте, Aracon, Вы писали:
A>Написал программу с использованием MFC. Утечек памяти, связанных с неудалением выделенной через new или malloc памяти там точно нет, связанных с COM вроде бы тоже (проверял Visual Leak Detector'ом).
То, что тулы их не нахоят ещё не явл. док-вом что их нет. Хотя, в случае MFC утечки памяти, связанных с неудалением выделенной через new или malloc пропустить почти невозможно. Утечки COM и BoundsChecker легко не заметит, тем более Visual Leak Detector. Если есть СОМ (вернее любой third-party) — утечки могут быть в нём.
Ещё бывают GDI leaks.
Заказчик пожаловался на утечки, проявляющиеся в виде возрастания "съеденной" приложением памяти в Диспетчере задач. Стал проверять. Увидел, что показатель растет при открытии диалогов программы (это понятно), чуть-чуть иногда возрастает по непонятной причине (причем, видимо, связанной с интерфейсом, т.к. при закрытых диалогах ничего такого не наблюдалось), а через какое-то время тестирования показатель резко уменьшился вдвое.
Ну и что? По вашему если кол-во используемой памяти не константно — значит есть утечки? Смотрите на люб. другую программу — увидите тоже самое. Сверните своё окно — вообще удивитесь.
A>Соответственно, вопросы: A>1) Как могут получаться утечки в MFC, если используются статические объекты, а динамические корректно удаляются?
Тогда — не могут получаться.
A>2) Есть ли в MFC какой-нибудь механизм вроде уборщика мусора, которым можно объяснить резкое уменьшение используемой памяти?
Нету, но есть своп-файл ОС.