使用Linux到目前为止堆栈地址非常高且堆地址非常低(通过使用C程序打印堆和堆栈地址可以看到),我遇到了Win32进程内存布局的问题。 MWSDN说堆栈地址高于堆地址,但从我在实践中看到的,堆栈地址低于堆地址。所以我很困惑。有人请解释一下。
答案 0 :(得分:3)
嗯,stack addresses are higher than heap addresses
- 这根本不是真的。堆栈和堆都可以驻留在Windows上进程的地址空间中的任何位置。
如果您启动了很多线程,进行大量堆分配并加载数百个dll,您会发现所有这些对象均匀分布在地址空间周围。
此图显示了Windows上典型32位进程中的虚拟分配结构。绿色显示自由区域,蓝色显示分配的东西。活动主要发生在地址空间的开头,但在其他地址范围内也存在。