データは全てサイズ分のアラインが揃っていた方がいい。こんな風に。
| C/C++言語での型 | サイズ(byte) | アライン |
|---|---|---|
| (unsigned/signed)char | 1 | 1 |
| (unsigned/signed)short | 2 | 2 |
| (unsigned/signed)long | 4 | 4 |
| (unsigned/signed)int | 4 | 4 |
| bool | 4 | 4 |
| (unsigned/signed)long long | 8 | 8 |
| float | 4 | 4 |
| double | 8 | 8 |
ところで、構造体を作成する時、コンパイラはアラインを満たすようにデータを配置するので、例えば
struct Hoge{
int a;
short b;
double c;
char d;
};
と
struct Hoge{
int a;
short b;
char d;
double c;
};
とを比べると、前者のデータ並びは、
| データ名 | 先頭byte | サイズ(byte) |
|---|---|---|
| int a | 0 | 4 |
| short b | 4 | 2 |
| (なし) | 6 | 2 |
| double c | 8 | 8 |
| char d | 16 | 1 |
| データ名 | 先頭byte | サイズ(byte) |
|---|---|---|
| int a | 0 | 4 |
| short b | 4 | 2 |
| char d | 6 | 1 |
| (なし) | 7 | 1 |
| double c | 8 | 8 |
ただ、それによって構造体のデータ構造が見にくくなるようなら、やらない方がいいのだが…