Как 32-битный процесс может использовать почти 4 ГБ памяти?

Я думал, что 32-битный процесс может использовать не более 2 ГБ ОЗУ, поскольку половина адресного пространства зарезервирована для ОС (возможно, 3 ГБ с переключателем / 3 ГБ). Однако StarCraft II удается использовать почти 4 ГБ, и это 32-разрядный EXE. Обозреватель процессов показывает:

4,000,896 KB private bytes
3,928,164 KB working set

Как это сделать и как я могу это сделать в моих собственных программах? Возможно ли это в .NET? В неуправляемом C ++? В управляемом C ++ как-то?


person EMP    schedule 30.06.2012    source источник


Ответы (1)


В 64-битной ОС 32-битный процесс может использовать почти 4 ГБ.

Процессы, помеченные как «с учетом большого адресного пространства», могут использовать до 3 ГБ в 32-битной ОС и до полного адресного пространства в 64-битной ОС.

Вот более подробное обсуждение этого: Может 32-битный процесс получает доступ к большему объему памяти в 64-битной ОС Windows?.

person Alexei Levenkov    schedule 30.06.2012
comment
Спасибо, это объясняет. Полагаю, нет эквивалента .NET? - person EMP; 30.06.2012
comment
Это должно поддерживаться ... И вот вопросы с информацией, как это сделать stackoverflow.com/questions/1346480/ (я думал, что в VS / CSC есть опция, но нет - нужно использовать editbin то же самое как приложение Win32). - person Alexei Levenkov; 30.06.2012