Стек и базовый адрес стека

В структуре MEMORY_BASIC_INFORMATION каждый находит две переменные PVOID, названные BaseAddress и AllocationBaseсоответственно.

Я читаю книгу по Поточной обработке и ее осмотру, как оставить стековое пространство на стеке в некоторых деталях, однако существует что-то, что я не уверен, что понимаю правильно.

BaseAddress в структуре упомянул выше, он указывает на самый высокий адрес в стопке текущего потока или самый низкий адрес? Так как стек растет вниз, самое низкое было бы наверху и самое высокое внизу.

Что точно является различием между AllocationBase и BaseAddress поле? Я не нахожу документацию MSDN очень объяснительной, таким образом, я надеюсь, что кто-то может разъясниться немного больше?

В моей книге это также говорит, что адрес 'AllocationBase' совпадает с полем 'DeallocationStack' в структуре TEB, которая это говорит, что точки в конец стека, который я думал, были самым высоким адресом, однако начиная с его ОСНОВЫ, я предполагаю, что это должен быть самый низкий адрес, поскольку стек становится нисходящим. Таким образом, я отчасти смущен относительно того, что что?

На эту страницу 'DeallocationStack': максимальный размер стека хранится в поле DeallocationStack

Кто-то может помочь мне понять свой беспорядок?

1
задан jww 9 March 2019 в 03:50
поделиться

1 ответ

В MEMORY_BASIC_INFORMATION структура:

  • BaseAddress - адрес запрашиваемой страницы памяти (VirtualQuery (LPCVOID lpAddress , ...).
  • AllocationBase - начало выделенного блока памяти. Используется для освобождения. BaseAddress> = AllocationBase.

Если вы запрашиваете стек, то AllocationBase будет наименьшим адресом стека (вершина стека).

2
ответ дан 2 September 2019 в 23:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: