小编Mah*_*Roy的帖子

C程序中.bss段的模糊行为

我在下面编写了简单的C程序(test.c): -

#include<stdio.h>
int main()
{
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

并执行以下内容以了解.bss段中的大小更改.

gcc test.c -o test
size test
Run Code Online (Sandbox Code Playgroud)

输出结果如下: -

   text    data     bss     dec     hex filename
   1115     552       8    1675     68b test
Run Code Online (Sandbox Code Playgroud)

我没有声明全局或静态范围.所以请解释为什么bss段大小为8个字节.

我做了以下改变: -

#include<stdio.h>
int x;    //declared global variable
int main()
{
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

但令我惊讶的是,输出与以前相同: -

   text    data     bss     dec     hex filename
   1115     552       8    1675     68b test
Run Code Online (Sandbox Code Playgroud)

请解释.然后我初始化了全球: -

#include<stdio.h>
int x=67;    //initialized global variable
int main()
{
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

数据段大小按预期增加,但我没想到bss段的大小会减少到4(相反,当没有声明任何内容时为8).请解释.

text       data     bss     dec     hex filename …
Run Code Online (Sandbox Code Playgroud)

c size global-variables objdump object-files

7
推荐指数
1
解决办法
177
查看次数

结构体数组初始化

遇到的错误是:“{”标记之前的预期表达式。为什么会这样呢?

#include <stdio.h>
int main ()
{
    struct test
    {
        char a[100];
        int g;
    } b[2];
    b[0] = {"Maharshi", 5};
    b[1] = {"Hello", 6};
    printf("%u %u", &b[0], &b[1]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

1
推荐指数
1
解决办法
42
查看次数

标签 统计

c ×2

global-variables ×1

objdump ×1

object-files ×1

size ×1