Вы смотрите на размер рабочего набора вашей программы. Сумма страниц виртуальной памяти вашей программы, которые фактически находятся в оперативной памяти. Когда вы минимизируете главное окно, Windows предполагает, что пользователь некоторое время не интересуется программой, и настойчиво обрезает рабочий набор. Копирование страниц в оперативной памяти в файл подкачки и удаление их, освобождая место для другого процесса, который пользователь может запустить или переключить на него.
Это число также будет автоматически уменьшаться, когда пользователь запускает другую программу, которой требуется много оперативной памяти. Windows отбрасывает ваши страницы, чтобы освободить место для этой программы. Он выбирает страницы, которые ваша программа некоторое время не использовала, и, вероятно, это не сильно повлияет на работу вашей программы.
Когда вы переключаетесь обратно на свою программу, Windows необходимо поменять страницы обратно в ОЗУ. Но это по требованию, это только страницы на страницах, которые фактически использует ваша программа. Который, как правило, будет меньше того, что использовался ранее, нет необходимости, например, менять код инициализации вашей программы.
Само собой разумеется, число не имеет абсолютно никакого отношения к использованию памяти вашей программой, это просто статистическое число.
Частные байты были бы лучшим индикатором для утечки памяти. Taskmgr не показывает это, инструмент SysInternals ProcMon делает. Это все еще не очень хороший показатель, потому что это число также включает в себя любые блоки в куче, которые были освобождены вашей программой и добавлены в список свободных блоков, готовых к повторному использованию. Нет хорошего способа измерить фактическую используемую память, прочитайте мелкий шрифт для функции API HeapWalk () для вида проблемы, которая вызывает.
Диспетчер памяти и кучи в Windows слишком сложен, чтобы делать выводы из доступных чисел. Используйте инструмент обнаружения утечек, такой как распределитель отладки VC (crtdbg.h).