I have a struct such as
typedef struct
{
int a; // Let's say this ends up being 4 bytes
int b; // 4 bytes
char text[10]; // 10 bytes
} blah_t;
static blah_t myvar;
- 假设在
blah_t
中字段大小的总和为18个字节,但由于填充,sizeof(blah_t)
为20。 myvar
是静态变量,因此它将被初始化为零。
问题:
- 对于静态变量,填充字节19和20是否保证为0?
如果不是,则需要对任何结构体的
memcmp
进行有效验证–即使对于静态变量,也需执行memset(&myvar, 0, sizeof(blah_t))
。 - 那么对于
calloc(1, sizeof(blah_t))
呢?字节19和20是否保证为零?我相信是这样的。