Разница между физической и виртуальной памятью Visual C ++? - PullRequest
1 голос
/ 19 марта 2011

Я пытаюсь написать собственный менеджер памяти, и сейчас я выделяю глобальный массив байтов, например:

char g_retail_memory[512*MB];

Когда я смотрю в монитор ресурсов Windows 7, он сообщает, что выделено около 512 МБ виртуальной памяти. Может кто-нибудь объяснить, почему я не получаю физической памяти? Если вместо этого я использую malloc (), я получаю физическую память. Я делаю что-то неправильно? В таком случае, есть ли правильный способ получения физической памяти под Visual C ++?

1 Ответ

2 голосов
/ 19 марта 2011

См. http://en.wikipedia.org/wiki/Virtual_memory

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

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

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