У вас, кажется, нет сфокусированного вопроса, поэтому трудно дать ценный ответ.Тем не менее, вы, похоже, подразумеваете вопрос Как Windows отображает память пользовательского пространства?
Во-первых, низкое пространство виртуальной памяти - от нуля до 64 КБ и более - оставлено неназначенным для захвата NULLна основе указателя разыменования.Это распространенные ошибки программирования, о которых мы хотим знать немедленно.Программа почти наверняка должна завершиться, если она произойдет.Оставляя это пространство не отображенным, происходит эквивалент SEGFAULT для Windows.Очень полезно.
Как правило, код и постоянное место выделяется следующим.После запуска программы обычно нет необходимости изменять это пространство, поэтому оно устанавливается только для чтения, и его части помечаются как исполняемые - обычно это первая часть, которая может занимать 99% пространства.Если есть библиотеки общего кода, они отображаются после основного кода (обычно), часто с небольшими пробелами, так что сегмент кода библиотеки выравнивается по страницам (возможно, 4 КБ, возможно, 64 КБ или больше) для эффективного использования регистра управления памятью.Редко возникает необходимость в сохранении пространства виртуальной памяти.
После того, как это пространство данных.Это может быть инициализированная память или неинициализированная.Все это нужно читать-писать.И ему нужно зарезервировать пространство над ним, чтобы оно могло расти для увеличения пространства кучи.
Путь выше пространства данных - это пространство стека.Это должно быть чтение-запись и иметь пространство ниже , чтобы оно могло расти.Все современные стеки ЦП растут в направлении нехватки памяти.
А над стеком находится системное пространство.
Если процесс запрашивает доступ к совместно используемой памяти (с другими процессами), размер отображаемого окна диктуетгде в карте памяти это может поместиться.Отображение слишком близко к месту, где растет куча, является проблемой, и слишком близко к потенциальному росту стека также является проблемой.К счастью, довольно простые алгоритмы размещения решают эту проблему для подавляющего большинства программ.Просто подумайте о различных потребностях, и вы, вероятно, сможете понять, почему операционная система делает то, что делает.