Правильно, что в некотором смысле максимальное адресное пространство процесса составляет 4 ГБ. Половина адресного пространства, для каждого процесса, занята операционной системой. Это можно изменить с помощью переключателя 3 ГБ, но это может вызвать нестабильность системы. Таким образом, у нас осталось 2 ГБ адресуемой памяти для самостоятельного использования процессом. Ну, не совсем. Оказывается, что часть этого пространства занята другими вещами, такими как DLL, другой распространенный код. Фактическая память, доступная вам как программисту, составляет около 1,5 ГБ - 1,7 ГБ.
Я не уверен, как вы можете справиться со случайным превышением этого предела, но я знаю игры, которые по этой причине вылетают в больших многопользовательских картах. Следует также отметить, что 32-разрядная программа не может использовать более 2 ГБ адресного пространства в 64-разрядной системе, если только они не включают флаг компоновщика / LARGEADDRESSAWARE: YES.