我的問題是關於指向奇數大小的內存塊。特定位大小的C++指針
比方說,我有聲明,像這樣一個struct
:
typedef struct{
int32 val1 : 29;
int32 val2 : 26;
char val3;
}MyStruct;
假設聲明特定位字段的結構是desireable(爲什麼我們會使用位域不是問題)。
如果我想聲明的是指向這些領域的一個指針,我可能會嘗試這樣的事:
MyStruct test;
int32 *myPtr = &(test.val1);
除此產生錯誤「走位域的地址不允許「。
假設我們想要,有沒有辦法以這種方式指向這些字段?我知道C++可能會將字段填充到下一個字節(在這種情況下將是32位)。
由於指針指向字節,因此我認爲這種行爲是正常的,因爲沒有辦法存儲可能不是「完整」字節的地址。 – ereOn
我不相信你會看到指定位大小的位域成員的任何填充(或者至少,你不能確定是否有任何 - 是實現定義的)。 – RichieHindle
@RichieHindle:的確,對於大多數小值,不會有填充,因爲這正是發明位域的原因。 – PlasmaHH