gpt4 book ai didi

windows - 栈和栈基地址

转载 作者:可可西里 更新时间:2023-11-01 12:09:18 26 4
gpt4 key购买 nike

MEMORY_BASIC_INFORMATION结构一找到两个 PVOID 变量,分别称为 BaseAddressAllocationBase

我正在阅读一本关于线程的书,它非常详细地介绍了如何让堆栈空间留在堆栈中,但是有些东西我不确定我是否理解正确。

上述结构体中的BaseAddress,指向当前线程栈中的最高地址还是最低地址?由于堆栈向下增长,最低的会在顶部,最高的会在底部。

AllocationBaseBaseAddress 字段之间到底有什么区别?我觉得 MSDN 文档的解释不是很清楚,所以我希望有人能澄清一点?

在我的书中它还说'AllocationBase'地址与TEB结构中的'DeallocationStack'字段相同,它说它指向堆栈的末尾,我认为这是最高地址,但是因为它的 BASE,我猜它应该是最低地址,因为堆栈向下增长。所以我对什么是什么感到困惑?

根据 this page, 'DeallocationStack' is: 最大堆栈大小存储在 DeallocationStack 字段中

谁能帮我理解我的困惑?

最佳答案

MEMORY_BASIC_INFORMATION结构中:

  • BaseAddress - 查询内存页的地址(VirtualQuery(LPCVOID lpAddress,...)。
  • AllocationBase - 分配的内存块的开始。它用于释放。 BaseAddress >= AllocationBase。

如果您正在查询堆栈,那么 AllocationBase 将是堆栈的最低地址(堆栈顶部)。

关于windows - 栈和栈基地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3171475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com