我在我的項目和特定結構的上下文中使用數據結構,我對結構填充有疑問。首先看下面給出的結構。我使用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
是的,編譯器決定如何佈局結構。 –
實際上,標準中存在一系列限制,基本上只剩下一種明智的做法。 –