我怎样才能知道实际的结构尺寸? 使用 sizeof 返回对齐后的字节数。 例如:
struct s {
char c;
int i
}
sizeof(s) = 8; 我有兴趣获得没有对齐的字节大小,即 5
最佳答案
结构的实际尺寸为对齐后的结构尺寸。我的意思是 sizeof
返回内存中结构的大小。如果你想要一个按字节对齐的结构,你应该告诉编译器这样做。例如像这样的东西:
#ifdef _MSVC
# pragma pack(push)
# pragma pack(1)
# define PACKED
#else
# define PACKED __attribute((packed))
#endif
struct byte_aligned {
char c;
int i;
} PACKED;
#ifdef _MSVC
# pragma pack(pop)
#endif
现在 sizeof(byte_aligned)
返回 5 及其在内存中的实际 5 字节
关于c++ - 实际结构尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12179481/