Когда на самом деле освобождается куча памяти? - PullRequest
1 голос
/ 27 января 2012

Я выделяю память, используя new, как и когда я получаю данные одним из моих методов и в деструкторе, я освобождаю всю выделенную память, используя delete.

Однако после освобождения памяти из диспетчера задач, когда я смотрю на использование памяти на вкладке процесса, использование памяти остается прежним. Не создается впечатление, что память освобождается.

Итак, когда память на самом деле освобождается? И как лучше узнать фактическую память, используемую процессом.

Спасибо

Ответы [ 2 ]

2 голосов
/ 27 января 2012

В большинстве случаев, оно никогда не возвращается в ОС, пока приложение работает. После этого, конечно, все ресурсы восстанавливаются ОС.

[Отредактировано после того, как комментарии справедливо указали, что 'никогда' - это долгое время ...]

0 голосов
/ 27 января 2012

ОС выделяет кучу по умолчанию для вашего приложения.Эта куча выделяется во время инициализации вашего процесса.Таким образом, ваши новые и удаления не будут влиять на панель, которую вы видите в диспетчере задач.

Однако, если вы попытаетесь инициализировать большой буфер и выделенной кучи недостаточно, ОС выделит больше памятидля вашего приложения - и это должно быть отражено в диспетчере задач ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...