掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
unionで混在する型で正しく動作するには? (ID:63393)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> struct ST{ > unsigned short ST1; > int ST2; > }TESTSTRUCT; ST2を4バイト境界に揃えるために、ST1とST2の間に2バイトのパディングが入っているのでしょう。 こんな感じ。 0 1 2 3 4 5 6 7 (パイト) [ ST1 ][ PAD ][ ST2 ] cout << offsetof(NI::ST, ST2) << '\n'; としてみて4が出力されればパディング入り決定。(#include <cstddef> をお忘れなく) でもって、TESTUNION.aaのデータが一部パディング領域と重なるから2バイト分飛ばされているように見えるわけです。 ところで、 > for (i=0;i<=6;i++){ 〜.aaのサイズを1バイトオーバーしていますよ。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.