C++ 对象内存分布

来源:互联网 发布:cms监控怎么改ip 编辑:程序博客网 时间:2024/05/19 06:17


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函数用户代码前初始化的,所以也当做未初始化数据。
 
局部数据: 栈中。