面试官问我:bss段的大小记录在哪里?
昨天面试,面试官问了我一下C语言的各种变量保存在哪
我跟他扯到bss段,我多事的说了一句bss段在可执行文件中不占用位置。程序运行前才开辟并清零。
比如int a[100],在可执行文件中没有记录100个0,而只是记录了a符号和a所用内存的大小。
没想到面试官居然问我那这个bss段的大小记录在哪里?
所以我现在的疑问是:1.bss段中的变量,是为每一个变量记录大小,还是只记录整个bss段的大小?
2.大小记录在哪?
这些我蒙了。完全没想过啊。
刚才用objdump分析了一下,还是无解。求解答
每个未初始化的变量的大小放在了符号表里了呀
static int g;
static short int h;
int main(){}
你看下面符号表中的4 ,2分别就是g,h的大小
[解决办法]
整个bss的大小记录在段表里呀
[解决办法]
readelf -S
[解决办法]
《Windows PE权威指南》
[解决办法]
推荐看《程序员的自我修养》