首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >堆栈和堆栈基址

堆栈和堆栈基址
EN

Stack Overflow用户
提问于 2010-07-03 20:28:22
回答 1查看 2.5K关注 0票数 1

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

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

上面提到的结构中的BaseAddress,它是指向当前线程堆栈中的最高地址还是最低地址?因为堆栈是向下增长的,所以最低的在顶部,最高的在底部。

AllocationBase字段和BaseAddress字段到底有什么区别?我不觉得MSDN文档很有说服力,所以我希望有人能更多地解释一下?

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

对于每个this页面,' DeallocationStack‘是:最大堆栈大小存储在字段DeallocationStack中

有人能帮我理解我的困惑吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-05 14:54:12

MEMORY_BASIC_INFORMATION结构中:

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

如果要查询堆栈,则AllocationBase将是堆栈的最低地址(堆栈顶部)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3171475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档