これは、 Rob Walkerの回答hereによって引き起こされた質問です。
次のようにクラス/構造体を宣言するとします。
struct
{
char A;
int B;
char C;
int D;
};
これらのメンバーがメモリ内で正確にその順序で宣言されると想定しても安全ですか、それともコンパイラに依存するものですか? 私が質問しているのは、コンパイラがそれらを使って何でもできるといつも思っていたからです。
これは私の次の質問につながります。上記の例でメモリ アラインメントの問題が発生する場合、コンパイラはそれを暗黙的に次のように変換できないのはなぜですか。
struct
{
char A;
char C;
int B;
int D;
};
(私は主に C++ について質問していますが、C の回答も聞きたいです)