int 32bit、short 16bit、char 8bit と仮定します。

例えば、
int n = 0x00000000;
short i = 0x1111, j = 0x2222;
char c = 0x33, d = 0x44;
とした場合、デバッガでメモリの確保のされかたを見てみると、
僕の環境では以下のようになっていました。

44 CC CC CC 33 CC CC CC 22 22 CC CC 11 11 CC CC 00 00 00 00

つまり、各変数に置き換えると、

DD xx xx xx CC xx xx xx JJ JJ xx xx II II xx xx NN NN NN NN

となっています。
すべて 4 バイトの倍数番目から確保されていて、
それぞれの変数の間にはすきまが空いています。


ここで思ったのですが、それぞれの変数間を詰めないのであれば、
メモリの消費をできるだけ抑えるために、
int の代わりに char や short を使ったりするのは意味がないんじゃないでしょうか?
結局、int 分の領域が用意されていることと同じになりませんか?
それとも、この変数間のすきまは何かにちゃんと有効利用されているんでしょうか?

どなたか教えてください。
(説明がややこしくなってすいません。)