c语言 static

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 读取目标文件,其中:
c语言 static_第1张图片
可以得到 data段从文件地址0x58开始,长度为4字节。
使用命令 hexdump -C test_symbol 把目标文件的字节全部打印出来:
c语言 static_第2张图片
可以看到,0x58处的值为9,即静态局部变量初始值写入到目标文件中

你可能感兴趣的:(c语言,开发语言)