Расширить Windows предел памяти процесса - PullRequest
0 голосов
/ 19 марта 2020

Я новичок в stackoverflow и C / C ++.

Экспериментируя с программированием в windows, я заметил, что существует определенный предел того, сколько памяти может выделить процесс, и мне интересно, как его расширить.

Заранее благодарю за помощь

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

У вас есть несколько вариантов:

Это для x86 windows: 32-разрядный процесс имеет ограничение в 2 ГБ памяти. Но это можно увеличить до 3 ГБ, загрузив систему с флагом BCD /INCREASEUSERVA 3072. Это имеет некоторые причуды, хотя. В 32-разрядной системе 4 ГБ памяти разделены, 2 ГБ для режима пользователя и 2 ГБ для режима ядра. Теперь это 3 ГБ для пользовательского режима и 1 ГБ для режима ядра. Это нормально, но иногда драйверам ядра требуется больше места в куче, чем требуется, заполняя эти 1 ГБ для режима ядра.

Вы также можете использовать расширения оконного адреса. Это позволяет использовать физическую память объемом более 4 ГБ, в то же время используя 32-разрядные адреса. Это может быть хорошим вариантом, если вы хотите сохранить ваш процесс 32-битным.

Наконец, просто скомпилируйте вашу программу как 64-битную. Вы удаляете ограничение адресов в режиме адресов в пользовательском режиме, уменьшая накладные расходы из-за отсутствия виртуального процессора x86, а также получаете улучшенные меры безопасности.

0 голосов
/ 19 марта 2020

за информацию о том, сколько памяти доступно. Это действительно зависит от среды, которую вы используете: в какой ОС вы запускаете код, это 16 или 32 или 64-битная архитектура памяти?

Например, , если вы выполняете код на Windows 10, вы можете использовать средство GlobalMemoryStatusEx () GlobalMemoryStatusEx .

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

, но также существует ограничение на память, вы можете использовать.

например Windows 7 64-разрядная версия только позволит вам получить доступ к 8 ГБ для вашей программы (что, скорее всего, достаточно), даже если у вас намного больше свободной памяти.

также отметьте это getrlimit, setrlimit - контролируйте максимальное потребление ресурсов

...