在MEMORY_BASIC_INFORMATION结构中,您可以找到两个PVOID变量,分别称为BaseAddress
和AllocationBase
。
我正在阅读一本关于线程的书,它正在讨论如何将堆栈空间留在堆栈中的相当详细的内容,但有些东西我不确定我是否正确理解。
上述结构中的BaseAddress是否指向当前线程堆栈中的最高地址或最低地址?由于堆栈向下增长,最低位于顶部,最高位于底部。
AllocationBase
和BaseAddress
字段之间究竟有什么区别?我没有发现MSDN文档非常具有说明性,所以我希望有人能澄清一点吗?
在我的书中,它还说'AllocationBase'地址与TEB结构中的'DeallocationStack'字段相同,它表示指向堆栈的末尾,我认为这是最高的地址,但是它的BASE,我猜它应该是最低的地址,因为堆栈向下增长。所以我对什么是什么感到困惑?
每this页,'DeallocationStack'是:最大堆栈大小存储在DeallocationStack字段中
有人能帮助我理解我的困惑吗?
答案 0 :(得分:2)
在MEMORY_BASIC_INFORMATION
结构中:
如果您正在查询堆栈,那么AllocationBase将是堆栈的最低地址(堆栈顶部)。