objdump -t test 64位系统上的输出
.text 00000000004006c0 l d .text 0000000000000000 .text
代码段。
.rodata 0000000000400b40 l d .rodata 0000000000000000 .rodata
只读数据段,保存初始化的只读数据。
.data 0000000000631dc0 l d .data 0000000000000000 .data
数据段,保存初始化的数据(非只读),实际分配内存
.bss 000000000064a480 l d .bss 0000000000000000 .bss
未初始化数据段,保存未初始化的数据,实际不分配内存
全局数据,可分为以下几种:
初始化的,int i = 0; char str[] = "abc";
.data段中。
未初始化的,classx(); char str[1000];
.bss段中。
const类, const static int x = 2; const int i= 0;
.rodata段中。
C++的全局对象,实际是在main函数用户代码前初始化的,所以也当做未初始化数据。
局部数据: 栈中。