堆栈地址和代码段、常量等地址的先后顺序不固定的吗?

我看linux下大多数资料,显示的虚拟内存图 堆栈地址都是大于代码段、常量的地址,windows下我用VS 运行几次,这两者之间的地址怎么前后不固定的?一会在前,一会在后?

第一次运行

img


第二次运行

img

这个为什么要固定啊
开始运行,然后向操作系统请求资源,操作系统肯定是哪里有空位就把哪块给你
分配上操作系统肯定有自己的算法策略,比如对齐,碎片处理等,具体我也不知道,但肯定是动态调整,不会有什么固定先后的