【发布时间】:2015-04-25 00:07:33
【问题描述】:
假设我有以下结构:
typedef struct {
int mID;
struct in_addr mIP;
size_t dataSize;
// Another structure
fairness_structure str;
bool ack;
bool stability;
bool stop_message;
}HeaderType;
如您所知,结构的大小会因其对齐方式而有所不同。如何用一些数据填充字段之间的填充,比如用零?
【问题讨论】:
-
你希望通过填充padding达到什么目的?
-
您是否在问如何在对齐填充内隐藏数据?对齐会自动补零。
-
@RPGillespiem,谢谢,请您提供官方文档以确认。
-
这没什么好证明的,这个结构体就是
sizeof(HeaderType)的一块内存,如果你用零初始化,那么即使填充也是零。和初始化数组是一回事。 -
@MikeSeymour 在 C99 中,类型只有在具有静态存储时才被零初始化,否则它是未定义的。 stackoverflow.com/a/21152256/4591872