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