sizeof (int)とsizeof(double)がそれぞれ 4 と 8 であり、次のコードの前に#pragma packなどのプリプロセッサ コマンドまたはコンパイラ コマンド ラインで使用される#pragma packと同じ機能を持つコンパイラ オプションがないものとします。
typedef struct
{
int n;
double d;
} T;
sizeof(T)はいくらですか?
CPUとRAM間のデータバス幅にもよると思います。幅が 32 ビットの場合、sizeof(T) は 12 です。幅が 64 ビットの場合、sizeof(T) は 16 です。32 ビットのデータ バスを備えたコンピューターで、64 ビットの数値を CPU から RAM に転送するにはまたはその逆の場合、CPU はデータ バスに 2 回アクセスし、一度に 32 ビットの読み取りまたは書き込みを行う必要があるため、構造体Tのメンバーdを 8 の倍数のアドレスに格納しても意味がありません。
同意しますか?
(下手な英語でごめんなさい)