空の構造体のサイズ
C++では空の構造体を作ることができます。こんな風に。
struct _EMPTY {};
これは特になにかをしているわけではありません。単純にメンバを持たない構造体なだけです。
果たしてこの構造体のサイズはいくつでしょうか?
struct _EMPTY {}; _tprintf(_T("size: %d\n"), sizeof(_EMPTY)); // size: 1
結果は1バイトとなります。0じゃないのがちょっと不思議ですよね。
次にint型を一つだけもつ構造体を作ってサイズを見てみます。
struct _INTEGER {}; _tprintf(_T("size: %d\n"), sizeof(_INTEGER)); // size: 4
環境にも依りますが4バイトです。1+4にはなりません。
空の構造体はいくら空だと言っても型のサイズがないのもおかしいので最も小さい型のサイズが割り当てられているのでしょうか。環境に依存しそうな値なので1だと思って利用すると失敗しそう...
※プログラムはVisual Studio 2015 Preview版で試しています。