我在我的项目和特定结构的上下文中使用数据结构,我对结构填充有疑问。首先看下面给出的结构。我使用Visual Studio 2008编译器。关于在C++中的结构填充
typedef struct tagDATA_PACK
{
DWORD dDataLength;
BYTE bFlags;
BYTE bAttrib;
BYTE bOffset;
}DATA_PACK;
问题1:上述结构的大小是多少? 它显示8个字节。它是正确的。但是,
考虑下面给出的修改结构?
typedef struct tagDATA_PACK
{
DWORD dDataLength;
BYTE bFlags;
}DATA_PACK;
这里大小与上面的8字节结构相同。 我的疑问是,编译器会在哪里添加额外的3字节? 是BYTE bFlags还是之前?
所有的答案是非常感谢。
这意味着编译器推断,其中增加了额外的填充字节的地方,不是吗? – RyanAdamVeet
是的,编译器决定如何布局结构。 –
实际上,标准中存在一系列限制,基本上只剩下一种明智的做法。 –