some questions about the BSS segment
1. in main() block
- int main()
- {
- static char a;
- printf("the size of char:%dbyte.", sizeof(char));
- return 0;
- }
复制代码
question: gcc => a.out;size a.out
the BSS segment contains 8 bytes, why?
2.static int a[7];//normal
static int b[8];//the BSS segment contains 7*4 bytes alone,why?
3.static double a[3];//the BSS segment is so boring, it looks there is no rule at all. why?
$gcc a.c
$size a.out >> testseg
$cat testseg
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
static char a;
这是属于bss段的。
字节对齐的问题吧?
库里边有个名为completed的static 变量,一个字节, 对齐后4字节, a对齐后4字节,共8字节
可以用readelf -a看各段情况, 还有符号表的情况, 里面有各符号的详细信息
BSS 保存的是在该段的变量的信息, 而不是变量本身(所占的空间).
Thanks.
readelf 真不错。能否告知的知识应该看哪些参考书,您是自己独力摸索出来的还是借鉴了某些资料的?
Thank you all.
通过分析代码知道的.