aliasing bug

名詞

動的割り当てを行うコード、特にmalloc(3)やそれに相当するものを介して行うコードで生じうる、ある種の捉えにくいプログラミングエラー。複数のポインタが同じ記憶領域を指している(その別名(エイリアス)になっている)場合、その領域が一方の別名を通じて解放または再割り当て(その結果として移動)された後、別の別名を通じて参照されることが起こりうる。これは、mallocのarenaの状態と割り当て履歴に応じて、捉えにくい(そしておそらく断続的な)不具合を招きうる。割り当てた領域を決して別名化しない割り当て戦略を使うか、ガベージコレクタを採用するLISPのような高水準言語を使うことで回避できる(GCを参照)。stale pointer bugとも呼ばれる。precedence lossagesmash the stackfandango on corememory leakmemory smashoverrun screwspamも参照。

歴史的注記:この用語は今日でこそC言語のプログラミングと結びつけられているが、1960年代にはすでにAlgol-60やFORTRANのコミュニティで非常によく似た意味で使われていた。