1、静态局部变量在程序加载时初始化,静态局部变量的初始值写入到了data段:
如下代码test_symbol.c
int f()
{
static int x = 0;
return x;
}
int g()
{
static int x = 9;
return x;
}
使用命令gcc -c test_symbol.c -o test_symbol 编译
使用命令 readelf -a test_symbol 读取目标文件,其中:
可以得到 data段从文件地址0x58开始,长度为4字节。
使用命令 hexdump -C test_symbol 把目标文件的字节全部打印出来:
可以看到,0x58处的值为9,即静态局部变量初始值写入到目标文件中