代码段:代码,全局常量(const),字符串常量
数据段:初始化后的全局变量和静态变量。数据段属于静态内存分配。
BSS:(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。BSS段属于静态内存分配。
堆:动态分配的区域
栈:局部变量(初始化以及未初始化的,但不包含静态变量),局部只读变量(const)
.rodata一般位于代码段,.data一般位于数据段,
使用cat /proc/xxxx/maps 就能找出代码段,数据段,堆和栈的地址分布
使用readelf -S 程序名能找出rodata data和bss的地址分布