some questions about the BSS segment

发布于 2022-09-30 05:22:44 字数 722 浏览 21 评论 0

1. in main() block

  1. int main()
  2. {
  3.     static char a;
  4.    
  5.     printf("the size of char:%dbyte.", sizeof(char));
  6.     return 0;
  7. }

复制代码
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

新人笑 2022-10-07 05:22:44

static char a;
这是属于bss段的。

穿越时光隧道 2022-10-07 05:22:44

字节对齐的问题吧?

我很OK 2022-10-07 05:22:44

库里边有个名为completed的static 变量,一个字节, 对齐后4字节, a对齐后4字节,共8字节

可以用readelf -a看各段情况, 还有符号表的情况, 里面有各符号的详细信息

最偏执的依靠 2022-10-07 05:22:44

原帖由 cixzer 于 2007-9-17 20:37 发表
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 cont ...

BSS 保存的是在该段的变量的信息, 而不是变量本身(所占的空间).

偏爱自由 2022-10-07 05:22:44

原帖由 Guang-Yuan.Wang 于 2007-9-18 09:10 发表
库里边有个名为completed的static 变量,一个字节, 对齐后4字节, a对齐后4字节,共8字节

可以用readelf -a看各段情况, 还有符号表的情况, 里面有各符号的详细信息

Thanks.

readelf    真不错。能否告知的知识应该看哪些参考书,您是自己独力摸索出来的还是借鉴了某些资料的?

Thank you all.

活雷疯 2022-10-07 05:22:44

原帖由 cixzer 于 2007-9-18 20:19 发表

Thanks.

readelf    真不错。能否告知的知识应该看哪些参考书,您是自己独力摸索出来的还是借鉴了某些资料的?

Thank you all.

通过分析代码知道的.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文