未初期化メモリを使う方法
research!rsc: Using Uninitialized Memory for Fun and Profit
N個のフラグを扱う場面があるとする。まず,こんな感じで書き始めることになると思う。
bool flags[N]; for (int i=0; i<N; ++i) flags[i]=false;
もしこのとき,Nがものすごく大きかったら……フラグをクリアする処理だけで,結構な時間を食ってしまうかもしれない。
そんなときのために編み出されたのが,上のエントリーで紹介されているアルゴリズム。二つのテーブルを組み合わせて使うことにより,メモリを未初期化のまま使うことを可能にしている。
未初期化のメモリへのアクセスなんて,それ自体が不正なことのように感じられるかもしれないけれど,たまには未初期化のまま使ってみるのもオツなものですよ……という話。実用性については,正直なところあまり無いと思う。