Windows 堆栈和堆栈基址
在结构中可以找到两个PVOID变量,分别称为Windows 堆栈和堆栈基址,windows,multithreading,stack,internals,Windows,Multithreading,Stack,Internals,在结构中可以找到两个PVOID变量,分别称为BaseAddress和AllocationBase 我正在读一本关于线程的书,书中详细介绍了如何将堆栈空间保留在堆栈上,但是有一点我不确定我是否理解正确 上面提到的结构中的基址是指向当前线程堆栈中的最高地址还是最低地址?由于堆栈向下生长,所以最低的堆栈位于顶部,最高的堆栈位于底部 AllocationBase和BaseAddress字段之间到底有什么区别?我不觉得MSDN文档很有解释性,所以我希望有人能进一步澄清一下 在我的书中,它还说'Alloca
BaseAddress
和AllocationBase
我正在读一本关于线程的书,书中详细介绍了如何将堆栈空间保留在堆栈上,但是有一点我不确定我是否理解正确
上面提到的结构中的基址是指向当前线程堆栈中的最高地址还是最低地址?由于堆栈向下生长,所以最低的堆栈位于顶部,最高的堆栈位于底部
AllocationBase
和BaseAddress
字段之间到底有什么区别?我不觉得MSDN文档很有解释性,所以我希望有人能进一步澄清一下
在我的书中,它还说'AllocationBase'地址与TEB结构中的'DeallocationStack'字段相同,它指向堆栈的末尾,我认为这是最高的地址,但是由于它的基址,我猜它应该是最低的地址,因为堆栈向下增长。所以我有点困惑到底是什么
每页,“DeallocationStack”为:最大堆栈大小存储在字段DeallocationStack中
有人能帮我理解我的困惑吗?在
内存\u基本信息
结构中:
- BaseAddress—查询的内存页的地址(VirtualQuery(LPCVOIDlpAddress,…)
- AllocationBase—已分配内存块的开头。它用于解除分配。BaseAddress>=AllocationBase
如果您正在查询堆栈,则AllocationBase将是堆栈的最低地址(堆栈顶部)。您能分享一下这本关于线程的书吗?:)谢谢。Joe Duffy的Windows并发编程。