使用花括号符号初始化结构时,GCC是否将其填充零初始化?

时间:2020-05-21 01:11:31

标签: c gcc

gcc是否将expect之后的3个填充字节归零?

c.b

1 个答案:

答案 0 :(得分:3)

不一定。在带有-O2的x86-64上的gcc 10.1,此代码(also on godbolt

struct foo  {
   int a;
   char b;
};

void blah(struct foo *p);

void foo(void) {
    struct foo c = { 1, 2};
    blah(&c);
}

编译为该程序集

foo:
        subq    $24, %rsp
        leaq    8(%rsp), %rdi
        movl    $1, 8(%rsp)
        movb    $2, 12(%rsp)
        call    blah
        addq    $24, %rsp
        ret

您会看到最后三个字节未初始化。