Part 15.メモリレイアウト(8)


いま、普通のzero fillによるクリアとこのクリアとの違いを明確にするため、「文字列本体をzero fillする」手法を「物理的なクリア」と呼び、Lengthにゼロを代入することによりクリアする手法を「論理的なクリア」と呼ぶことにしよう。


物理的なクリアは目に見てとれるので説明を要しないだろう。注目すべきは論理的なクリアである。こちらはメモリ上にはゴミが残ったままなので本当にクリア出来ているのか第三者が見て判定できない。


しかし、そのコードを書いたプログラマが、「これは、論理的なクリアがなされているのだ」と主張するなら、そのプログラマは、少なくとも(自分の定めたルールに則り)前述のClearとIsEmptyの二つのメソッドを矛盾なく提供できるはずだ。(これが提供出来ないなら最初に定めたルール自体がおかしい。)


以下では、論理的なクリアの手法を探求していく。


(つづく)