Part 8.メモリレイアウト(1)
いま、UCS-2で32文字を格納するために64byteを確保したとしよう。
この確保されたバッファに本当に文字が32文字格納されている保証はどこにもない。
むしろ、そこにUCS-2で格納されている保証すらない。すべて0かも知れない。
typedef ushort UCS2;
UCS2 moji[32];
上のように書いてあれば、おそらくはUCS2が格納されているだろうが、その保証もどこにもない。しかし、上のように書いたときにindex out of boundsなどでこの領域が侵食されないことなどの仮定を行ない、「ここにはUCS2しか格納されていないのだ」と信じてプログラムすることは可能である。
そして、そのように信じることが大切なのだし、たいていの場合、そのように(自分の作ったルールを)信じてプログラミングを行なう。
(つづく)