关于这方面的问题,建议你读程序员的自我修养 链接装载与库,这本书讲的非常详细
两个说法都没有问题,栈数据是大地址开始,向小地址增,堆跟内存一样,开始于小地址,随着使用数量增长,地址向大地址变化。
这个跟编译器没有关系,内存布局是runtime的,只跟操作系统有关系。每一个process的virtual address space都是固定模式,哪些地址段存放哪些东西是OS自己决定的,第一张图是比较全面的,第二张图比较简略,按照第一张图理解。另外,编译器能决定的是静态binary的存储,load进memory之后就是另外一码事。
/* * 0x20000000 * .data * .bss * .heap * .stack * 0x20008000 */
21,597
社区成员
21,709
社区内容
加载中
试试用AI创作助手写篇文章吧