擱淺的掃雷艦需要副業[Sei]
C++ 使用union會自動往前做對齊嗎???
function內外實體物件大小一樣,但short後的array起始位址硬是往後跳了2個byte
史萊姆流星
那要看你 union 怎樣宣告呀
擱淺的掃雷艦需要副業[Sei]
struct strA {
short val_1;
union {
char chval_2[8];
long long val_2;
};
}
擱淺的掃雷艦需要副業[Sei]
印出的strA的位址和大小都沒變,但chval_2有用union比沒用的起始位址多了2byte
史萊姆流星
union 的定義不就是「共用」嗎?
所以那塊記憶體會取「最大」的值
擱淺的掃雷艦需要副業[Sei]
不是,我說的是chval_2起始位址,short val_1並不在union裡
史萊姆流星
chval_2 跟 val_2 共用一塊記憶體
所以會取最大值這樣
你想看差異的話,可以試試看
後面的long 改成 int64 看看差異
擱淺的掃雷艦需要副業[Sei]
我說不是共用最大值多少,是起始位址...
擱淺的掃雷艦需要副業[Sei]
位址印出來,沒用union的
strA:0x3210
strA.val_1:0x3210
strA.cval_2: 0x3212 ← &strA丟進有用union的function後變成0x3214
載入新的回覆