一个可执行程序包含三个部分代码段:主要存放指令,操作以及只读的(常量)数据(例如字符串常量)。数据段:全局或者静态的已经初始化的变量。BSS 段:全局或者静态的未初始化的变量。
栈上面有1G内存时Linux内核区,与栈之间有一个gap随机地址,防止代码***。数据区data与堆区之间也有一个随机gap。