Понимание структуры памяти процесса Windows

707
Jithin Pavithran

Я нахожу много блогов и документов, объясняющих расположение памяти процесса. Все они описывают структуру памяти следующего вида:

Но когда я смотрю на инструмент VMMap в Windows, я нахожу страницы стека, кучи и т. Д ... перепутаны!
Например:
enter image description here

У меня есть следующие вопросы:

  1. Кто-нибудь может объяснить, почему эти образы не являются связными? Куда я иду не так?

  2. Когда я использую VirtualAllocEx()в VMMap, регион помечается как частная память. Это куча или стек или сегмент отображения памяти?

1
Куча находится внутри памяти, выделенной VirtualAllocEx, которая является чисто виртуальной. Прочитайте это: https://msdn.microsoft.com/en-us/library/ms810627.aspx Alex 5 лет назад 0
не связно как именно? Frank Thomas 5 лет назад 0
@FrankThomas, На первом рисунке стек размещается по старшим адресам, а куча - по младшим. Куча не входит между адресами стека. Но VMMap показывает, как стек, так и куча перепутаны. Jithin Pavithran 5 лет назад 0
ну, во-первых, ваш главный образ - это процесс Linux, а не windows. Frank Thomas 5 лет назад 0
Физическое распределение памяти строго зависит от операционной системы - любая физическая страница может быть предназначена для любых целей. Аналогично, пространство виртуального хранилища любого процесса может содержать такие вещи, как отображаемые в памяти файловые окна. Mike Robinson 5 лет назад 0

0 ответов на вопрос