分类: C/C++
2012-01-10 10:19:26
1. 初始化为非零值的静态分配数据和全局数据存在数据段中,运行相同程序的每个进程都有自己的数据段。
2. 初始化为零值的静态分配数据和全局数据存放在进程的BSS区域内。
测试代码:
用gdb调试:
(gdb) p &a
$1 = (int *) 0x8049544
(gdb) p &b
$2 = (int *) 0x8049538
(gdb) p &c
$3 = (int *) 0x8049548
(gdb) p &d
$4 = (int *) 0x804954c
(gdb) p &e
$5 = (int *) 0x8049540
(gdb) p &f
$6 = (int *) 0x8049534
(gdb)
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[22] .data PROGBITS 08049528 000528 000014 00 WA 0 0 4
[23] .bss NOBITS 0804953c 00053c 000014 00 WA 0 0 4
.data节加载入内存后从 08049528 --> 08049528 + 14
.bss 节加载入内存后从 0804953c --> 0804953c + 14
注意:offset也是十六进制
所以f、b位于.data节
e、a、c、d位于.bss节