А вот кто-нибудь знает, почему лимит VS 2017 всего 2ГБ? Ведь разрядность 32 позволяет использовать 4ГБ?
Ну я в общих чертах знаю.
Когда проектировали ядро WinNT типичными объёмами ОЗУ компа были единицы и десятки мегабайт и гигабайты казались чем то заоблачным.
В процессе мозгового штурма была выработана схема, когда верхний бит 32-битного адреса как бы означал, что эта часть адресного пространства используется ядром. И такие адреса процессам не давались в принципе. Плюс еще маппинг портов ввода-вывода на ОЗУ какую то роль сыграл вроде бы тоже, но тут не знаю толком и могу приврать.
В дальнейшем при развитии технологий поняли, что 2Гб мало и сделали спец-опцию в ядре, позволяющую отдавать процессам до 3Гб ОЗУ. 1Гб всё равно так и остался недоступен процессам.
Надо заметить, что WinXP надо запускать с этой опцией - это выбирается в настройках системы, называется вроде бы PAE. Но еще и сам exe-шник (32-битный) должен быть скомилирован так, что в нём в заголовке EXE включена такая галка - иначе тоже не заведется технология. Но если обе карты совпадут, то процесс сможет скушать примерно 3Гб ОЗУ.